忘れるメモ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