重复连接信号/插槽系统

时间:2013-12-04 08:18:41

标签: c++ lambda

我想检测信号/插槽系统中信号的重复connect,例如,执行此操作时:

button.connect("onClicked", [this](){ do_something(); });
button.connect("onClicked", [this](){ do_something(); });

当slot是函数指针,(instance_ptr,memfun_ptr)对,或者甚至是定义了operator==()的仿函数时,比较插槽是可能的,因此可以检测到重复的connect,但是lambda对象无法比较。这个问题有什么变通方法?我正考虑给插槽命名,并根据该名称比较插槽:

button.connect("onClicked", "handleConnect", [this](){ do_something(); });

但也许我应该简单地禁止lambda仿函数作为插槽?

0 个答案:

没有答案