使用websocketpp时"No matching function for call to bind"

"No matching function for call to bind" while using websocketpp

本文关键字:call for to bind function matching websocketpp No 使用      更新时间:2023-10-16

我正在制作一个(c ++)应用程序,它是一个websocket客户端和websocket服务器。为了能够做到这一点,我正在使用库websocketpp。为了使应用程序既是客户端又是服务器,我希望endpoint1.run()endpoint2.listen(port)是多线程的。这就是出现问题的地方。

通常(单线程)我使用:endpoint.listen(port);哪个有效。

为了使其成为我使用的多线程:

boost::thread t(boost::bind(&server::listen, &endpoint, port));
sleep(1);
cout << "After thread! n";
t.join();

但是,我收到错误:

main.cpp:116: error: no matching function for call to ‘bind(<unresolved overloaded function type>, websocketpp::server*, uint16_t&)’

server::listen是一个重载函数,我应该在绑定中以不同的方式调用它吗?

看看提升文档。有一个很好的例子。
你需要自己解决歧义。

对于那些仍然想知道如何实现这一点的人:

void(websocketpp::role::server<websocketpp::server>::*f)(uint16_t,size_t) = &websocketpp::role::server<websocketpp::server>::listen;
boost::thread t(f, &endpoint, port, 1); //No need to use boost::bind here

之后调用 t.detach() 或 endpoint.stop() 和 t.join()

相关文章: