传递 boost::绑定参数作为参数



我写了运行正常的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));
            }
    }

最新更新