【发布时间】:2013-06-21 11:49:42
【问题描述】:
我正在围绕 websocket++ 库做一个消息传递库。这个库允许我设置自己的函数来管理消息。由于我没有做将使用我的代码的最终应用程序,因此我还需要允许我的用户为此处理程序设置他们想要的功能。
这就是它现在的工作方式。某个地方有一个 socket(m_client) 类,它有他的 set_handler 函数,它的使用类似于下面的 sn-p。
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++ 还是很陌生,整个函数指针、处理程序和模板都与我的实际理解有所不同。我阅读了有关绑定用法的信息,但所有示例都包括声明一个函数,然后直接使用绑定。
也搜索了一个类似的问题,但如果存在就没有找到。我不会否认我的方法不是最好的或完全错误的,因此欢迎所有建议和建议。
【问题讨论】:
标签: c++ boost boost-bind websocket++