への関数ポインタ、私は何が必要2クラスC++:他のクラスの機能
class B {
public:
int func(int i);
};
class A {
public:
typedef int (B::*fPtr)(int);
void run();
B* mB;
};
void A::run() {
// create a pointer
fPtr p = &(B::func);
// invoke the function
mB->*p(2); <------- Compilation Error
}
を持っているが、Aの実行機能に)(FUNCへのポインタを作成することです。 mBが1つの引数を持つ関数に対応していないというコンパイルエラーが発生します。なぜあなたはmB->func(2);
を呼び出すことはできません
なぜあなたは、これは非常に複雑作っているの?なぜそれを継承でタグ付けしましたか?それを使用していないときは?インターフェイスについて聞いたことがありますか? –
std :: function/boost ::関数を使わないのはなぜですか?それらは、愚かなCスタイルの関数ポインタよりもはるかに柔軟で、ずっとシンプルです。 – Lalaland
@EthanSteinbergメンバ関数のポインタはCの関数ポインタとほとんど関係がなく、 'std/boost :: function'には格納できません。 –