C++のクラスでメンバ変数にメンバ関数へのポインタを設定

      2018/06/14

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);

 - C言語/C++