如何在boost :: signal2中比较slot_type

Howto compare slot_type in boost::signal2

本文关键字:比较 slot type signal2 boost      更新时间:2023-10-16

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

示例:

boost::signals2::signal<void ()> sig;
sig.connect(Callback1());
sig.connect(Callback2());

因此,how to避免了另一个电话

sig.connect(Callback1());

您可以使用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;
}