C++ Einführung
C++ Variablen im Speicher, Zeiger
C++ Texte etc.
C++ Dateien, Formatierte Ausgabe, ...
C++ OOP
Hilfe / Anhang
Downloads / Links
Partner
Fehler melden / Kontakt
Impressum
|
| Seite: [1] - Drucken |
Inhalt:
Callbacks (Funktionszeiger)
Du hast ja bereits Zeiger auf Variablen genutzt, aber C++ kann mehr! Du kannst nämlich genausogut einen Funktionszeiger benutzen, etwa um dem Nutzer (d)einer Bibliothek die Möglichkeit zu geben, bei bestimmten Events eine eigene Funktion aufzurufen - etwa eine Log-funktion, die aufgerufen wird, wenn es Fehler gibt. Der Autor der Bibliothek muss dann nicht festlegen, ob der Fehler direkt zum Beenden führt, oder nur (in eine Datei) ausgegeben wird...
Man nennt diese Funktionen "Callbacks"!
Ein Beispiel
//callback.cpp // Demonstriert den Einsatz von Funktionszeigern #include <iostream> #include <cmath> void ausgeben(); void beenden (); double wurzel(int,void bei_fehlern()); //Für reelle Zahlen int main() { //Wurzel aus "-1" ist nicht reell: wurzel(-1, ausgeben); //Bei Fehler: Einfach ausgeben wurzel(-1, beenden ); //Bei Fehler: Beenden return 0; } void ausgeben() { std::cout << "Es ist ein nicht fataler Fehler aufgetreten!" << std::endl; } void beenden() { std::cout << "Es ist ein fataler Fehler augetreten!" << std::endl; std::exit(-1); } double wurzel(int wovon, void bei_fehlern()) { if (wovon<0) bei_fehlern(); //Aua! else return std::sqrt(wovon); }
 | author@laptop:~/cpp$ ./callback
Es ist ein nicht fataler Fehler aufgetreten!
Es ist ein fataler Fehler augetreten!
author@laptop:~/cpp$ |
Analyse
Jetzt zur Funktion des Programms!
Ohne Klammern handelt es sich um einen Pointer auf die Funktion (aus "beenden()" wid "beenden"). Den Rest solltest du verstehen können.
Es handelt sich auch hier um ein riesiges Thema, und ich bezweifle, dass du alle Einzelheiten in naher Zukunft brauchst! Sonst empfehle ich dir einen Blick auf "http://www.newty.de/fpt/index.html" (Englisch).
Wie geht's weiter?
Weiter mit der üblichen Zusammenfassung!
|
| Seite: [1] - Drucken |
|