メンバ関数へのポインタを取得するためには、次のようにします。
void (SomeClass::*pointer)() = &SomeClass::someMethod;
以下、例です。
#include <iostream> class SomeClass { public: void someMethod() { std::cout <<"ポインタ経由でメソッドを読んでみた" <<std::endl; } }; int main(int argc, char *argv[]) { void (SomeClass::*pointer)() = &SomeClass::someMethod; SomeClass *instance = new SomeClass(); (instance->*pointer)(); // ポインタ経由でメソッドを読んでみた delete instance; return 0; }
「す、すごい、これは応用範囲が広そうだ!」と思う前に、ポリモーフィズムを検討しましょう。C言語の関数ポインタと同じ文脈で使わない方が良いと思います。
Contributions