使用CreateThread 时报错,函数调用缺少参数列表,该如何处理
使用CreateThread 时报错,函数调用缺少参数列表
声明:
class AFX_EXT_CLASS UmaConnection
{
public:
pSOCKET_OBJ FindSocketObj(pTHREAD_OBJ pThread,int nIndex);
DWORD WINAPI ServerThread(LPVOID lpParam);
}
定义:
DWORD WINAPI ServerThread(LPVOID lpParam)
{
调用了FindSocketObj ;
}
::CreateThread(NULL,0,ServerThread,pThread,0,NULL);
其中ServerThread调用了FindSocketObj ;
运行时报错 ServerThread”: 函数调用缺少参数列表
和 FindSocketObj找不到标识符
请问该如何解决 ,关键是第二个错误
------解决方案--------------------
首先ServerThread这个函数要么定义成全局,要么定义成类的静态成员函数
如果是全局,就把UmaConnection这个类的指针作为参数传入ServerThread,然后用这个指针去调用FindSocketObj。
如果线程函数是静态,那么又分2种,FindSocketObj是静态,可以不传入参数,UmaConnection::FindSocketObj这样调用,如果FindSocketObj不是静态那就要传类指针,通过指针调用
另外pThread是神马东东,如果你还要传入额外的参数,就封装个结构体。
声明:
class AFX_EXT_CLASS UmaConnection
{
public:
pSOCKET_OBJ FindSocketObj(pTHREAD_OBJ pThread,int nIndex);
DWORD WINAPI ServerThread(LPVOID lpParam);
}
定义:
DWORD WINAPI ServerThread(LPVOID lpParam)
{
调用了FindSocketObj ;
}
::CreateThread(NULL,0,ServerThread,pThread,0,NULL);
其中ServerThread调用了FindSocketObj ;
运行时报错 ServerThread”: 函数调用缺少参数列表
和 FindSocketObj找不到标识符
请问该如何解决 ,关键是第二个错误
------解决方案--------------------
首先ServerThread这个函数要么定义成全局,要么定义成类的静态成员函数
如果是全局,就把UmaConnection这个类的指针作为参数传入ServerThread,然后用这个指针去调用FindSocketObj。
如果线程函数是静态,那么又分2种,FindSocketObj是静态,可以不传入参数,UmaConnection::FindSocketObj这样调用,如果FindSocketObj不是静态那就要传类指针,通过指针调用
另外pThread是神马东东,如果你还要传入额外的参数,就封装个结构体。