"externe" event-methoden
Von: Frank (frank.wunderlich@gmail.com) [Profil]
Datum: 12.06.2009 00:43
Message-ID: <ac8e52da-6704-425a-9736-0b12e06380be@a36g2000yqc.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Datum: 12.06.2009 00:43
Message-ID: <ac8e52da-6704-425a-9736-0b12e06380be@a36g2000yqc.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Hallo, ich habe schon einigeErafhrung mit delphi, und versuche mich jetzt bisschen in C++. in delphi kann man bei Klassen (bzw. deren Objekten) vom Hauptprogramm funktionszeiger hinterlegen. diese werden klassenintern aufgerufen, befinden sich aber nicht in der gleichen datei wie die klassendefinition. weiterhin wird bei diesen Methoden ein Instanzzeiger mitgeliefert. gibt es sowas auch in C++? wenn ja, wie nennt sich das genau und wo finde ich sowas? in delphi sieht das z.b. so aus: Definition der klasse: [code] TNotify=procedure() of object; //typ des Funktionszeigers; of object besagt, dass bei der methode auch ein Pointer auf die Instanz übergeben wird class TBlah(TBlubb) private FNotify:TNotify; //variable für funktionszeiger procedure DoNotify; //klasseninterne Methode zum aufrufen der referenzierten funktion public property Notify:TNotify read FNotify write FNotify; //das property zum setzen des funktionszeigers end; procedure TBlah.DoNotify; begin if assigned(FNotify) then FNotify; //wenn funktionszeiger gesetzt ist, die Funktion aufrufen end; [/code] im Hauptprogramm erstellt man eine entsprechende methode und weist diese dem Objekt zu: [code] procedure BlahEvent(Sender:TObject);//hier plötzlich ein Parameter => Objekt-Referenz begin end; //zuweisung des events myBlah.Notify=BlahEvent; [/code] jedesmal, wenn klassenintern DoNotify aufgerufen wird, wird die im Hauptprogramm befindliche BlahEvent-Methode mit ausgeführt.somit kann die Klassendefinition universeller verwendet werden. wie würde das in C++ aussehen? ich habe schon eine weile rumgesucht, auch funktionszeiger gefunden, aber da fehlt mir der instanz-zeiger. gut, man könnte diesen explizit mitgeben, aber evtl gibt es ja schon ein fertiges Konstrukt. ich hoffe, ich habe das verständlich dargelegt. Gruß Frank[ Auf dieses Posting antworten ]
Antworten
- SG (13.06.2009 00:59)
- Thomas Maeder (13.06.2009 20:48)
- James (14.06.2009 10:42)
- Stefan Reuther (14.06.2009 12:39)
- Christof Donat (14.06.2009 15:16)
- Stefan Reuther (15.06.2009 18:23)
- Christof Donat (16.06.2009 00:44)
- Thomas Maeder (15.06.2009 17:35)
- Christof Donat (13.06.2009 12:28)
