code einer klasse nach dem aufruf des constructors zuweisen
-
hallo leute
ich hab da ein message system, aehnlich dem von windows fuer das gui.
ich bleib da gleich mal bei der analogie.
angenommen ich habe eine klasse button. wenn jemand auf den button klickt wird die funktion event aufgerufen. nun sind die buttons member eines fensters, des parents und sollen fuer jeden button eine bestimmte methode der parentklasse aufrufen:class parent { public: button btn1; button btn2; void event_von_btn1(button*); void event_von_btn2(button*); };btn1 bekommt ein event und soll parent::event_von_btn1 aufrufen.
jetzt suche ich eine moeglichkeit das ich aehnliches machen kann:/* constructor von parent */ parent::parent(void) : btn1(this), btn2(this) { btn1.call([](){m_parent->event_von_btn1(this); }); /* 1 */ }(1) m_parent ist member von btn1 und this ist btn1.
sonst muesste ich naemlich fuer jeden button eine ableitung machen nur um den aufrufcode reinzubringen. eventuell als template und class-methoden zeiger ginge es auch. gefaellt mir aber nicht wirklich.
hoffe es ist ersichtlich wo ich hin will.
Meep Meep
-
Suchst du vielleicht das Observer-Pattern?
-
Das geht mit
std::functionganz einfach.