34章 メンバ関数ポインタ
http://www.geocities.jp/ky_webid/cpp/language/034.html
関数ポインタというのはC言語の時にならいました。
C++では更に、あるクラスのメンバ関数のポインタも得ることができます。
さっそく実装してみます。
#include <iostream> using namespace std; class CSample { public: void func () { cout << "CSample::func" << endl; } }; int main() { void (CSample::*pFunc)() = &CSample::func; CSample obj; // メンバ関数ポインタを使って関数呼び出し (obj.*pFunc)(); return 0; }
$ main CSample::func
おお、なんか凄いですね。
まずメンバ関数ポインタの宣言ですが、CSample::*pFuncといったようにクラス名がついています。これはクラス名がないとどのクラスのメンバ関数かわからないからです。
で呼び出しですが、通常のメンバ関数名を各部分をポインタ変数に置き換えて括弧をつけただけです。