我正在设置这样的on-message处理程序,它可以正常工作。
srv.set_message_handler(&on_message);
// This works
void on_message(websocketpp::connection_hdl hdl, server::message_ptr msg_ptr)
{
}
但是,当我创建一个类并将on_message
函数放入该类并尝试set_message_handler
时,我收到错误。在这种情况下,srv
变量是一个类成员。像这样:
class Server
{
public:
typedef websocketpp::server<websocketpp::config::asio> server;
void on_message(websocketpp::connection_hdl hdl,
server::message_ptr msg_ptr);
private:
server srv;
};
错误:
C:\Users\Shiro\ClionProjects\Thesis\source_files\Server.cpp: In constructor 'Server::Server(short unsigned int, const Graph&, const Graph&)':
C:\Users\Shiro\ClionProjects\Thesis\source_files\Server.cpp:10:37: error: no matching function for call to 'websocketpp::server<websocketpp::config::asio>::set_message_handler(void (Server::*)(Server::connection_handler, Server::message_ptr))'
s.set_message_handler(&on_message);
^
我该如何解决这个问题?我希望我的on_message
函数位于Server
类中。
答案 0 :(得分:1)
这样做可以解决问题:
// using boost::bind
server.set_message_handler(bind(&on_message, this, ::_1, ::_2));