#include <iostream>
using namespace std;
class B
{
public:
int getMsg(int i)
{
return i + 1;
}
};
class A
{
B b;
public:
void run()
{
taunt(b.getMsg);
}
void taunt(int (*msg)(int))
{
cout << (*msg)(1) << endl;
}
};
int main()
{
A a;
a.run();
}
上記のコードには、クラス A 内にクラス B があり、クラス A には関数を引数として取るメソッド taunt があります。クラス B の getMsg は taunt に渡されます...上記のコードは次のエラー メッセージを生成しました:「エラー: 'A::taunt()' の呼び出しに一致する関数がありません」
上記のコードのエラー メッセージの原因は何ですか? 何か不足していますか?
アップデート:
#include <iostream>
using namespace std;
class B
{
public:
int getMsg(int i)
{
return i + 1;
}
};
class A
{
B b;
public:
void run()
{
taunt(b.getMsg);
}
void taunt(int (B::*msg)(int))
{
cout << (*msg)(1) << endl;
}
};
int main()
{
A a;
a.run();
}
t.cpp: メンバー関数 'void A::run()': 19 行目: エラー: 'A::taunt()' の呼び出しに一致する関数がありません -Wfatal-errors によりコンパイルが終了しました。
(*msg)(int) を (B::*msg)(int) に変更した後も同じエラーが発生します