#include #include #include #include class Button { private: boost::signal mySignal; std::string name; public: Button(std::string _name):name(_name) { } void pressed() { mySignal(name); } void unregisterCallback(const boost::signal::slot_type& slot) { mySignal.disconnect(slot); } void registerCallback(const boost::signal::slot_type& slot) { mySignal.connect(slot); } }; class Dummy { private: std::string name; public: Button* button; Dummy(std::string _name):name(_name){ button = new Button("my Button"); button->registerCallback(boost::bind(&Dummy::sayHello, this , _1)); } void sayHello(std::string param) { std::cout << "Hello: " << param << " (name: " << name << ")" << std::endl; } void unregister() { button->unregisterCallback(boost::bind(&Dummy::sayHello, this , _1)); } }; int main() { Dummy test("test"); (test.button)->pressed(); (test.button)->pressed(); test.unregister(); (test.button)->pressed(); (test.button)->pressed(); }