我正在围绕 websocket++ 库做一个消息传递库。这个库允许我设置自己的函数来管理消息。由于我没有做将使用我的代码的最终应用程序,因此我还需要允许我的用户为此处理程序设置他们想要的功能。
这就是它现在的工作方式。某处有一个 socket(m_client) 类,它有他的 set_handler 函数,它的使用就像下面的代码片段一样。
m_client.set_message_handler(bind(&myFunction,&m_client,_1,_2));
我想做的是提供一个将作为参数 &myFunction 的函数,因此用户只需调用如下:
my_class.set_msg_handler(&myFunction);
然后这将是声明:
void set_msg_handler(<type> myfunction){
m_client.set_message_handler(bind(myFunction,&m_client,_1,_2));
}
但是我无法弄清楚哪个是 myfunction 的正确类型以便使其编译。或者,即使这是存档的好方法。我浏览了 boost 代码,看看是否能得到一些提示……但是当它结束使用模板时,那是我还没有管理的东西。
我知道让用户自己进行绑定并传递其输出可能会更简单,但是 m_client 不能直接访问,我想保持这种方式用于封装建议。我想现在这不是绝对必要的,也许有一天我会需要它。因此,在学习的建议中,我决定以任何方式提出。
对于这种级别的使用,我对 C++ 还是很陌生,整个函数指针、处理程序和模板与我的实际理解有点不同。我阅读了有关绑定用法的信息,但所有示例都包括声明一个函数然后直接使用绑定。
还搜索了一个类似的问题,但如果它存在就没有找到。而且我不会否认我的方法不是最好的或完全错误的,因此欢迎所有建议和建议。