:A.cppでメンバー関数ポインタの配列
class A
{
typedef void (A::*fp)();
void test1();
void test2();
A(int a);
}
私が持っている:
A::A(int a)
{
fp fpointers[] = {&A::test1,&A::test2};
fpointers[a]();
}
void A::test1()
{
//do something
}
void A::test2()
{
//do something
}
これは私が持っているものの削減と簡素化されたバージョンです。しかし、問題はまだ有効です。私の謙虚な経験から、「fpointers」は関数ポインタの配列を定義し宣言する方法です。私は間違って
expression preceding parentheses of apparent call must have (pointer-to-) function type
は何をやっている:私は、私はこのエラーを取得していますラインfpointers[a]();
に問題があるのでしょうか?あなたがインスタンスを必要とするよう
@ user4581301ええ、それを修正します。ありがとう。 – user1806687
トピックを外してください:['std :: function'を見てください。](http://en.cppreference.com/w/cpp/utility/functional/function)ランタイムのオーバーヘッドを少し増やしますが、メソッドポインタの構文特に[lambda expressions](http://en.cppreference.com/w/cpp/language/lambda)と['std :: bind'](http://en.cppreference.com/w/cpp/)に興味がありますユーティリティ/機能/バインド)。 – user4581301
@ user4581301ありがとうございます:-) – user1806687