我已经宣布:
class aaa {
public:
static std::queue<QPair<void (*)( ... ), int> > m_commands;
static int bbb();
static void ccc(...);
};
在 bbb() 方法中我写道:
int aaa::bbb() {
m_commands.push( qMakePair( aaa::ccc, 0 ) );
}
但它抱怨:
error C2664: 'void std::queue<_Ty>::push(QPair<T1,T2> &&)' : cannot convert parameter 1 from 'QPair<T1,T2>' to 'QPair<T1,T2> &&'
为什么?当我有这样的功能时:
void reg( void ( *invoker )( ... ), int args ) {
m_commands.push( qMakePair( invoker, args ) );
}
我可以通过这种方式轻松地将静态函数发送到上述函数:
reg( aaa::ccc, 0 );