【问题标题】:Howto compare slot_type in boost::signal2如何比较 boost::signals2 中的插槽类型
【发布时间】:2015-05-12 14:17:32
【问题描述】:

如果您使用不同的函数(将被调用)连接到信号,如何检查该函数是否已连接? 通常我会比较函数指针的地址,但是我怎样才能访问那个指针呢?

例子:

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

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

那么如何避免再次调用

sig.connect(Callback1());

?

【问题讨论】:

  • 我尝试先调用断开连接,但在 function_equal_impl 中查找 == 运算符来比较插槽时出现编译器错误。

标签: c++ boost stl


【解决方案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;
}

【讨论】:

  • 谢谢,但我可以检查一下它是否与 Callback1() 完全相关吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多