2016-05-24 7 views
0

Ich habe somo Code geschrieben, der gut funktioniert. Aber ich würde es gerne anders schreiben und ich weiß nicht wie. Dies ist, was ich getan habe:Übergabe boost :: bind Parameter als Argumente

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

Hier ist, was ich tun möchte:

void A::doAction() { 
    B b; 
    b.add(&A::doAction, this); 
} 

Ich weiß nicht, wie das „add“ -Methode der Klasse „B“ ändern .

Antwort

0

ich endlich die Lösung gefunden:

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