我写了somo代码,工作正常。但我想以另一种方式写它,我不知道该怎么做。 这就是我所做的:
class A {
public:
void doAction();
}
typedef boost::signals2::signal<void(bool)> OnTriggered;
typedef OnTriggered::slot_type OnTriggeredSlot;
class B {
public:
void add(const OnTriggeredSlot &iSlot);
}
void A::doAction() {
B b;
b.add(boost::bind(&A::doAction, this, _1));
}
以下是我想做的事情:
void A::doAction() {
B b;
b.add(&A::doAction, this);
}
我不知道如何修改“B”类的“添加”方法。
答案 0 :(得分:0)
我终于找到了解决方案:
class B
{
public:
template<class SlotClass> boost::signals2::connection add(SlotClass * obj, void(SlotClass::*func)(bool))
{
return m_sig.connect(boost::bind(func, obj, _1));
}
}