术语不评估为1参数的函数

时间:2017-06-19 15:41:22

标签: c++ multithreading visual-studio client-server

所以我一直在使用多线程编写一些客户端服务器代码,我编写了这个函数:

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的类中。

1 个答案:

答案 0 :(得分:1)

std::exception's constructor并未将std::string@Override public boolean onInterceptTouchEvent(MotionEvent ev) { onTouchEvent(ev); return false; } 作为参数。您将不得不使用另一个异常类,例如std::runtime_error,它提供了这样的构造函数。

如果您愿意,也可以提供自己的异常类。