class CCallBack
{
public:
// 测试的被回调的函数
void TestFunc(int a)
{
printf("%d\n", a);
}
};
void main()
{
CCallBack cb;
void* f = (void*)(cb.TestFunc);
}
{
public:
};
void main()
{
}
Compiling...
test.cpp
test.cpp(85) : error C2440: 'type cast' : cannot convert from 'void (__thiscall CCallBack::*)(int)' to 'void *'
执行 cl.exe 时出错.
(曾经问过StarWing,他说这是不可能实现的 )
后来找了好多资料,终于被我发现了,原来类函数的回调并非不可实现。居然还有这招!真是绝了:
#include <stdio.h>
//
// 被回调的类
class CCallBack
{
public:
};
// 声明被回调函数类型
typedef void(CCallBack::*TESTFUNC)(int);
//
// 调用回调的类
class CMyCall
{
public:
};
//
// 用于测试的类
class RUN
{
public:
};
void main()
{
}