我定义了一个类的成员函数,DWORD WINAPI ChatServer::WorkerThread(LPVOID lpParam);
可是编译的时候总是会报错说第三个参数类型不对。但是如果是这个形式的函数的话DWORD WINAPI WorkerThread(LPVOID lpParam);又没有问题,请教大家改如何解决?
可是编译的时候总是会报错说第三个参数类型不对。但是如果是这个形式的函数的话DWORD WINAPI WorkerThread(LPVOID lpParam);又没有问题,请教大家改如何解决?
ChatServer指针递给LPVOID lpParam
{
...... return 0;
}
以上为定义的函数;我是这么调用的。
CreateThread(NULL, 0, WorkerThread, NULL, 0, &dwThreadId); Compiling...
ChatServer.cpp
G:\聊天室资料\ChatRoomServer\ChatServer.cpp(33) : error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
None of the functions with this name in scope match the target type
Error executing cl.exe.ChatRoomServer.exe - 1 error(s), 0 warning(s)
这是编译时的错误;
大哥大姐们一定帮帮忙啊,说的详细些。
AfxBeginThread(WaitThread,this,THREAD_PRIORITY_HIGHEST,0,0,NULL);UINT WaitThread(LPVOID pParam ) //线程
{
......
return 0;
}
static DWORD WINAPI WorkerThread(LPVOID lpParameter);//ChatServer.cpp
DWORD WINAPI ChatServer::WorkerThread(LPVOID lpParameter)
{
...... return 0;
}
函数声明改一下就行了protected:
static DWORD WINAPI WorkerThread(LPVOID lpParam);
static DWORD WINAPI WorkerThread(LPVOID lpParam);
DWORD ThreadFunc();实现:
DWORD WINAPI XX::WorkerThread(LPVOID lpParam)
{
XX *pObj = (XX*)lpParam;
return pObj->ThreadFunc();
}DWORD XX::ThreadFunc()
{
// 线程实际动作
}// 创建线程;
CreateThread(NULL, 0, WorkerThread, (void*)this, 0, &id);