将boost :: bind参数作为参数传递

时间:2016-05-24 10:18:18

标签: c++ boost boost-bind

我写了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”类的“添加”方法。

1 个答案:

答案 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));
            }
    }