如果使用不同的功能(要调用)连接到信号,如何检查功能是否已连接? 通常我会比较函数指针的地址,但是如何访问该指针?
示例:
boost::signals2::signal<void ()> sig;
sig.connect(Callback1());
sig.connect(Callback2());
所以如何避免再次调用
sig.connect(Callback1());
答案 0 :(得分:1)
您可以使用boost::signals2::connection
对象来存储信号与插槽的连接,因此您可以这样做:
boost::signals2::connection c = sig.connect(Callback1());
// another call
if (! c.connected()){
sig.connect(Callback1());
} else {
cout << "signal with this slot is connected! << endl;
}