2016-05-24 2 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)); 
      } 
    } 
Смежные вопросы