#include using namespace std; class ClassZ { public: void FunctZ( void ) { cout << "ClassZ::FunctZ" << endl; } }; template< typename MethodType > __declspec( naked ) void *__stdcall ConvertMethod( MethodType method ) { __asm { mov eax, dword ptr[ esp + 4 ] ; EAX = method; ret 4 ; return EAX; } } __declspec( naked ) void __stdcall Invoke( void *obj, void *funct ) { __asm { mov ecx, dword ptr[ esp + 4 ] ; ECX = obj; call dword ptr[ esp + 8 ] ; funct(); ret 8 ; return; } } int main( void ) { ClassZ z; void *pvFunctZ = ConvertMethod( &ClassZ::FunctZ ); Invoke( &z, pvFunctZ ); return 0; }