我想通过一个插槽来断开连接,就像在boost signals2 文档中一样:
Pass slot to disconnect:在这个接口模型中,通过 sig.disconnect(slot_func) 执行与 sig.connect(typeof(sig)::slot_type(slot_func)) 连接的 slot 的断开连接。
#include <iostream>
#include <boost/signals2.hpp>
class Test {
public:
Test();
using Signal = boost::signals2::signal<void ()>;
void slot();
void test();
};
Test::Test() {
boost::function<void ()> boundSlot = boost::bind(&Test::slot, this);
Signal sig;
sig.connect(Signal::slot_type(boundSlot));
sig();
sig.disconnect(boundSlot);
};
void Test::slot() {
std::cout << "slot()" << std::endl;
};
int main()
{
Test aTest;
return 0;
}
...但是在调用断开连接时出现错误(请参阅http://cpp.sh/45q6):
错误:'operator==' 的重载不明确
(操作数类型是 'boost::signals2::slot >::slot_function_type {aka boost::function}'
和 'const boost::function')
我错了什么?