Eigene Events definieren, auslösen & abfangen
-
Hallo,
ich muss in meinem Programm eigene Events definieren, auslösen und abfangen. Ich habe jedoch keine Ahnung, wie ich das anstellen soll. Kann mir jemand ein kleines Beispiel geben?
Viele Grüße aus Hamburg,
Jens Hibbeler
-
In der Sprache C++ gibt es keine Events. Von welchen Vorgaben gehst Du aus?
-
Hallo
das macht man mit Funktionspointern, die in diesem Fall auch Callbacks genannt werden.
bis bald
akari
-
Das geht in C++ aber auch schöner

-
Dazu sollte man boost::signals benutzen, das ist sozusagen das Event-System von C++. Ist zwar kein ISO-Standard, aber besser als garnichts.
-
Es wäre bestimmt auch interessant, sich in diesem Zusammenhang mal das Beobachter Entwurfsmuster anzuschauen.
-
Artchi schrieb:
das ist sozusagen das Event-System von C++
sag doch nicht sowas.
-
Artchi schrieb:
Dazu sollte man boost::signals benutzen, das ist sozusagen das Event-System von C++. Ist zwar kein ISO-Standard, aber besser als garnichts.
Wird doch kaum eingesetzt.
-
Spezi L schrieb:
Es wäre bestimmt auch interessant, sich in diesem Zusammenhang mal das Beobachter Entwurfsmuster anzuschauen.
Richtig. Wobei in diesem Fall und in einer stark-typisierten Sprache wie C++ "Typed Message" angebrachter ist.
Andrei Alexandrescu hat im CUJ vor kurzem zwei Artikel zum Thema Policy-Based Observer veröffentlicht. Die sind sicher auch interessant. Leider gibt es wohl nur den zweiten online:
http://blog.codelphi.com/innersmile/archive/2005/06/10/43862.aspxDazu sollte man boost::signals benutzen, das ist sozusagen das Event-System von C++. Ist zwar kein ISO-Standard, aber besser als garnichts.
boost::signals ist wirklich sehr schön, allerdings nicht, wenn das Event-System im performance-kritischen Teil der Anwendung liegt. In diesem Fall kannst du boost::signal getrost verbrennen (getestet habe ich bis Version 1.33.0 auf gccs und MS Compilern).
Meine Dirty-Little-Hack-Version ist da deutlich schneller. Wobei auch hier noch ne Menge Optimierungspotential drin steckt.
-
Was kann man denn daran so langsam machen?