忘れるメモC++
関数ポインタ
メソッドポインタ
operator
// 関数ポインタ typedef void (*LPFUNC)( int param ); void foo00( int param ) { printf( "func00:%d\n" , param ); } void foo01( int param ) { printf( "func01:%d\n" , param ); } void foo02( int param ) { printf( "func02:%d\n" , param ); } void testFuncPointer() { LPFUNC tbl[] = { foo00 , foo01 , foo02 }; tbl[2]( 255 ); } 出力結果: func02:255
// メソッドポインタ class Test { typedef void (Test::*LPMETHOD)( int param ); void foo00( int param ) { printf( "method00:%d\n" , param ); } void foo01( int param ) { printf( "method01:%d\n" , param ); } void foo02( int param ) { printf( "method02:%d\n" , param ); } public: void foo( int index , int param ) { LPMETHOD tbl[] = { &Test::foo00 , &Test::foo01 , &Test::foo02 }; LPMETHOD fn = tbl[index]; (this->*fn)( param ); } }; void testMethodPointer() { Test t; t.foo( 1 , 100 ); } 出力結果: method01:100
back