当我添加时,我在包含thread
模块时遇到了一些问题:
#include <thread>
对绑定函数的调用给了我错误:
错误 3 错误 C2440: '=' : 无法从 'std::_Bind<_Forced,_Ret,_Fun,_V0_t,_V1_t,_V2_t,_V3_t,_V4_t,_V5_t,>' 转换为 'int' c:\users\ohadpeled\documents \visual studio 2012\projects\loginserver\loginserver\server.cpp 87 1 LoginServer 4 IntelliSense:不存在从“std::_Bind”到“int”的合适转换函数 c:\Users\OhadPeled\Documents\Visual Studio 2012\Projects \LoginServer\LoginServer\Server.cpp 87 20 登录服务器
我不明白为什么它会导致这个错误,不包括调用工作正常的线程模块。如果有人能解释我是什么原因,我会很高兴。
这是服务器类的一部分:
/* Set TCP listening socket */
ListenResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen); // Error in this line
if (ListenResult != SOCKET_ERROR)
{
freeaddrinfo(result);
ListenResult = listen(ListenSocket, SOMAXCONN);
if (ListenResult != SOCKET_ERROR)
{
/* Accepting clients */
while(true)
{
ClientSocket = new SOCKET();
ADDR = new SOCKADDR_IN();
ADDRSize = sizeof(*ADDR);
*ClientSocket = accept(ListenSocket, (struct sockaddr*)ADDR, &ADDRSize);
if (*ClientSocket != INVALID_SOCKET)
{
/* I want to thread the handler function over here! */
Handler(ClientSocket, ADDR);
}
}
}
}
我用的是win7,用winsock设置socket。