所以我一直在使用多线程编写一些客户端服务器代码,我编写了这个函数:
void TriviaServer::accept()
{
// this accepts the client and create a specific socket from server to this client
SOCKET client_socket = ::accept(_socket, NULL, NULL);
if (client_socket == INVALID_SOCKET)
throw std::exception(__FUNCTION__);
// make a thread that will handle the new client
std::thread t(&TriviaServer::clientHandler, this, client_socket);
t.detach();
}
和Visual Studio说问题是:
错误c2064:术语不评估为采用1参数的函数
我知道有一个问题与我给的名字相同,但我没有在答案中看到解决方案。
Handle Client函数由以下行声明:
void clientHandler(SOCKET);
更改线路后发生错误:
std::thread t(&TriviaServer::clientHandler, this, client_socket);
这个函数被称为无穷大,每次接受新客户端并使用clientHandler处理它时,这个函数位于名为TriviaServer的类中。
答案 0 :(得分:1)
std::exception
's constructor并未将std::string
或@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
onTouchEvent(ev);
return false;
}
作为参数。您将不得不使用另一个异常类,例如std::runtime_error
,它提供了这样的构造函数。
如果您愿意,也可以提供自己的异常类。