私は宣言しました:
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 );