2016-05-24 161 views
0

我寫了somo代碼,工作正常。但我想用另一種方式寫,而我不知道該怎麼辦。 這是我做了什麼:傳遞boost :: bind參數作爲參數

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

我終於找到了解決辦法:

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