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

このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です