私は関数を別の関数にパラメータとして渡そうとしていますが、どちらも同じクラスのメンバ関数です。C++:メンバ関数での関数ポインタの使用
私は奇妙なエラーが発生しており、問題の原因を特定できません。ここで
は私の関数です:
void myClass::functionToPass()
{
// does something
}
void myClass::function1(void (*passedFunction)())
{
(*passedFunction)();
}
void myClass::function2()
{
function1(&myClass::functionToPass);
}
はしかし、私は次のエラーを取得しています:
cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)'
to 'void(__cdecl*)(void)'
だから何が与えますか?私はこれを動作させるためにあらゆるバリエーションを試したような気がします。メンバ関数の関数ポインタを渡すこともできますか?これをどのように機能させることができますか?
注:functionToPassを静的にすることは、実際には有効なオプションではありません。
エラーメッセージには、問題を解決するために必要な情報がすべて記載されています。 –
'boost :: function'の使用は、関数ポインタを使うより簡単です。 'boost :: function'(この場合は 'function1')と' boost :: function 'のどちらかをチェックする必要があります。 '* this'を渡す必要があります) –
MSalters