C++ メンバ関数へのポインタの書きかた
たまにしか使わないのでいつも忘れてるんだよな…
class Nanika
{
public:
int func( int ) { }
};
int main()
{
int (Nanika::*f)(int) = &Nanika::func; // (1) (2)
Nanika n;
(n.*f)( 30 ); // (3) (4)
Nanika *p = &n;
(p->*f)( 40 );
}
忘れそうなポイントは
- 型が int (Nanika::*)(int)
- Nanika::func じゃなくて &Nanika::func
- 呼ぶときは .* 演算子か ->* 演算子
- 呼ぶときは括弧でくくる