Terje Slettebų wrote: [...]
> It's also possible to do the signal/slot without macros on wxWindows. > See here (http://www.wxwindows.org/hworld2.txt) for an example. It's > all done in standard C++, without any macros. It is a lot better this way, I was not aware of this new syntax. But it seems you still need global IDs to refer to the members... A signal is really a list of pointer to members, maybe the following could simplify the situation. This is an example, but the signal<>::emit should be overloaded for N template parameters, N times: #include <list> #include <utility> #include <iostream> using namespace std; struct Object { }; template <typename T> struct signal : list< pair<Object *, T Object::*> > { typedef pair<Object *, T Object::*> type; void emit(...) { for (typename list<type>::iterator i = begin(); i != end(); ++ i) { (i->first->*i->second)(); } } }; struct A : Object { signal<void (...)> sigdone; }; struct B : Object { void slot_bip() { cout << __PRETTY_FUNCTION__ << endl; } void slot_refresh() { cout << __PRETTY_FUNCTION__ << endl; } }; int main() { A a; B b; a.sigdone.push_back(make_pair(& b, (void (Object::*)(...)) & B::slot_bip)); a.sigdone.push_back(make_pair(& b, (void (Object::*)(...)) & B::slot_refresh)); a.sigdone.emit(); } > The syntax is similar to Qt's signal/slot mechanism, but without any > preprocessor/intermediate compiler (MOC) needed. > > Here's a version using macros, which then resembles MFC > (http://www.wxwindows.org/hworld.txt). Yeah, this is what I was talking about. Philippe _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost