如何比较boost :: signal2中的slot_type

时间:2015-05-12 14:17:32

标签: c++ boost stl

如果使用不同的功能(要调用)连接到信号,如何检查功能是否已连接? 通常我会比较函数指针的地址,但是如何访问该指针?

示例:

boost::signals2::signal<void ()> sig;

sig.connect(Callback1());
sig.connect(Callback2());

所以如何避免再次调用

sig.connect(Callback1());

1 个答案:

答案 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;
}