C++のクラスでメンバ変数にメンバ関数へのポインタを設定
C++でメンバ変数にメンバ関数(インスタンスメソッド)へのポインタを設定・コールする方法です。
クラス定義
class FunctionPTest {
private:
int (FunctionPTest::*func_)(int args);
int TestFuncA(int args);
int TestFuncB(int args);
}
int FunctionPTest::TestFuncA(int args) {
// process
}
int FunctionPTest::TestFuncB(int args) {
// process
}
設定方法
FunctionPTest
のメンバ関数内で以下のように記述して実行するメソッドを設定します。
ここでは通常のメンバ変数同様にthis->
は省略可。
this->func_ = &FunctionPTest::TestFuncA;
func_ = &FunctionPTest::TestFuncB;
コール方法
FunctionPTest
のメンバ関数内で以下のようにコールします。
ここでは、通常のメンバ変数と違いthis->
の省略は不可。
int result = (this->*func_)(300);