如何在类中创建线程?我在一个类中这样做:
class CMySocket
{
public:
CMySocket(void);
~CMySocket(void);public:
DWORD CALLBACK ServerReadProc(LPVOID lpVoid );
private:
CString m_strReply;
CString m_strRequest;
HANDLE m_pThread;
int m_nPort;
};
创建类线程的函数如下:
void CMySocket::SocketServer( int nPort, LPCSTR szReply )
{
m_strReply = szReply;
m_nPort = nPort;
DWORD dwThreadId;
m_pThread =CreateThread(NULL, 0, ServerReadProc,this, 0, &dwThreadId);
}
DWORD CALLBACK CMySocket::ServerReadProc(LPVOID lpVoid )
{
CMySocket *Parent = ( CMySocket *)lpVoid;
SOCKET WinSocket = INVALID_SOCKET; //Window 套接字
SOCKET ClientSocket = INVALID_SOCKET; //用于通信的套接字 SOCKADDR_IN accept_sin; //接收连接体的地址
int accept_sin_len;
accept_sin_len = sizeof(accept_sin);
WinSocket = dealsocket.Listening(Parent->m_nPort );
}对这个类编译时出现如标题中所出现的错误:
CMySocket::ServerReadProc': function call missing argument list; use '&CMySocket::ServerReadProc' to create a pointer to member
不知道怎样处理,。
请教!
class CMySocket
{
public:
CMySocket(void);
~CMySocket(void);public:
DWORD CALLBACK ServerReadProc(LPVOID lpVoid );
private:
CString m_strReply;
CString m_strRequest;
HANDLE m_pThread;
int m_nPort;
};
创建类线程的函数如下:
void CMySocket::SocketServer( int nPort, LPCSTR szReply )
{
m_strReply = szReply;
m_nPort = nPort;
DWORD dwThreadId;
m_pThread =CreateThread(NULL, 0, ServerReadProc,this, 0, &dwThreadId);
}
DWORD CALLBACK CMySocket::ServerReadProc(LPVOID lpVoid )
{
CMySocket *Parent = ( CMySocket *)lpVoid;
SOCKET WinSocket = INVALID_SOCKET; //Window 套接字
SOCKET ClientSocket = INVALID_SOCKET; //用于通信的套接字 SOCKADDR_IN accept_sin; //接收连接体的地址
int accept_sin_len;
accept_sin_len = sizeof(accept_sin);
WinSocket = dealsocket.Listening(Parent->m_nPort );
}对这个类编译时出现如标题中所出现的错误:
CMySocket::ServerReadProc': function call missing argument list; use '&CMySocket::ServerReadProc' to create a pointer to member
不知道怎样处理,。
请教!
解决方案 »
- 有没有关于ArcGIS和VC开发结合的书籍
- 动态创建Toolbar后,显示时遇到的问题
- 使用双缓存技术显示背景图片的问题
- MFC: Compiling MFC80.DLL: Error reading key file 'finalpublickey.snk'
- Excel Automation里application属性的设置问题
- 请问这个错误怎么解决serverDlg.obj : error LNK2001: unresolved external symbol "public: bool __thiscall .......
- 如何在对话框中的CRichEditCtrl里面使用Tab排版?
- 求BoundChecker for VC++下载
- 有谁能给菜鸟讲讲类ccmdtarget主要有什么作用?详细点!
- Windows图标/图片是如何保存和显示"透明色"的?
- 有大侠会OGRE吗?问个场景查询的问题。
- 进制转换
谢谢你的提醒,我打到问题的所在了,只需要把DWORD CALLBACK ServerReadProc(LPVOID lpVoid )函数前面加上"static”就可以 了,因为如果想在类的内部创建线程,则线程所调用的线程函数必须是全局函数或类的静态成员函数。
谢谢!