コールバックを関数ポインタに転送したいと思います。C++静的関数ポインタを呼び出す
public:
int RegisterCallback1(int (*fct));
private:
static int (*m_Callback1);
class1.cpp中:
int class1::RegisterCallback1(int (*fct))
{
m_Callback1= fct;
}
だから私は、静的な(int型*)m_pointer1、同様の方法、ボイドRegisterCallback1((int型*)FCT)class1.hで
を宣言します
そして、私は、関数ポインタへのコールバックを転送したい:
void class1::Callback1()
{
(*m_Callback1)();
}
しかし、私は、「Expressionが必要コンパイラエラーを取得しますhave(pointer-to) - 関数型 私はチュートリアルに従って関数ポインタについて読んだことがあり、問題なくこのようにしているようです。なぜどんなアイデア?
EDIT: だから、私は(int型*)(無効)m_Callback1 - ビジュアルメーカーがあり、ボイドが必要です...- 宣言する次に、どのように私は、引数でregisterCallback関数を呼び出すのですか?
class1.RegisterCallBack1( ??? - class2::callback -???);
すごく面白いですが、registerCallback1関数を引数で呼び出すにはどうすればよいですか? class1.RegisterCallBack1(??? - class2 :: callback - ???); –
@David: 'class2 :: callback'が' static'、 'c1.RegisterCallBack1(&class2 :: callback)'であると仮定します。 – ildjarn
これは別のエラーを出します:void(__ stdcall *)()型の引数はvoid型(*)()のパラメータと互換性がありません。 __stdcallを関数ポインタの減速に追加すると、m_callback1()がclass1(class2ではなく)に見つかりませんというリンクエラーが発生します。 –