class A
{
public:
int func(void *p)
{
return 0;
}
};
int main()
{
A a;
typedef int(*pfunc)(void *);
typedef int(A::*pfunc2)(void *);
pfunc2 f2 = &A::func;
int b = *(int*)&f2;
//__asm
//{
// mov eax, [f2];
// mov b, eax;
// //jmp b;
//}
//b = b+(int)&a;
//(a.*f2)(0);
//int b2 = a.func;
//int pf = (int)a.func;
//pfunc pf= (pfunc)a.func;
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)b, NULL, NULL, NULL);
Sleep(100000);
return 0;
}
打断点后可以看到能执行到A::func,但注意的是函数内无法使用this