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