有时候会碰到一些的C++程序员定义的异步函数(通过Callback通知)没有UserData参数,这样会给OO设计带来很大的麻烦。举个例子(只是例子,不讨论有没有必要作成异步函数):
typedef void (*PFCALLBACK)();
DWORD WorkingFunc(LPVOID* param)
{
// Do something...
PFCALLBACK pFun = (PFCALLBACK)param;
pFun ();
return 0;
}
void Asynchronous(PFCALLBACK pCallbak)
{
HANDLE hThrd = CreateThread(NULL, 0, WorkingFunc, pCallbak, 0, NULL);
CloseHandle(hThrd );
}
如果要调用Asynchronous这个函数,通常可以这么做:
class myClass
{
public:
static void myCallback();
void myFunction();
private:
static HANDLE m_hEvent;
};
HANDLE myClass::m_hEvent= NULL:
void myClass::myCallback()