我写了运行正常的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"类的"添加"方法。
我终于找到了解决方案:
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));
}
}