10

関数を別の関数にパラメーターとして渡そうとしていますが、両方とも同じクラスのメンバー関数になっています。

奇妙なエラーが発生し、何が問題なのかわかりません。

ここに私の機能があります:

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 を static にすることは、実際には有効なオプションではありません。

4

2 に答える 2

1

他の人が指摘したように、あなたの間違いは渡される関数ポインタの型にあります。である必要がありますvoid (myClass::*passedFunction)()

これは、 C++ でメンバー関数へのポインターを使用するための優れたチュートリアルです。

于 2011-08-16T04:07:23.097 に答える