メンバ関数ポインタの配列とコール方法
以下のようなクラスとメンバ関数があったとします。
class CTest { public: int print ( int nCount ){ ... } int print2( int nCount ){ ... } };
メンバ関数ポインタの配列定義、関数の代入は以下のようになります。
int (CTest::*pFunc[2])(int); pFunc[0] = &CTest::print; pFunc[1] = &CTest::print2;
コールするときは以下。
メンバ関数ですので、具体的なインスタンスが必要となります。
CTest obj; (obj.*pFunc[0])( 5 ); (obj.*pFunc[1])( 10 );
vectorなどに代入したいときは変数名と配列の[]を除いた以下のようになります。
vector<int (CTest::*)(int)> vpFunc( 2 ); vpFunc[0] = &CTest::print; vpFunc[1] = &CTest::print2;
コールするときは以下。
(obj.*vpFunc[0])( 5 ); (obj.*vpFunc[1])( 10 );
参考サイトなど
第57章 メンバ関数ポインタ天国
http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03057.html