
Was quite easy actually. :-) #include <iostream> #include <boost/bind.hpp> #include <boost/signal.hpp> namespace jc { class task { public: task() { // ... } ~task() { // ... } void done() { sig_finished(this); } /// signals boost::signal<void (task *)> sig_finished; }; class bucket { public: bucket() { // ... } ~bucket() { // ... } void on_finished(task * t) { std::cout << "on_finished:\n"; } void set_task(task * t) { t->sig_finished.connect(boost::bind( &bucket::on_finished, this, t)); } }; } // namepace jc using namespace jc; int main() { task * t = new task; bucket * b = new bucket; b->set_task(t); t->done(); delete t; delete b; return 0; }