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

忘れそうなポイントは

  1. 型が int (Nanika::*)(int)
  2. Nanika::func じゃなくて &Nanika::func
  3. 呼ぶときは .* 演算子か ->* 演算子
  4. 呼ぶときは括弧でくくる