Funktion als Parameter übergeben
-
Hi,
wie kann ich eine void Funktion/Methode als Parameter in eine Methode hineingeben, um sie dort aufzurufen? Die hineingegeben Funktion/Methode sollte dabei ebenfalls parameter haben.
ich danke für jede Hilfe

LG
Noq
-
Mit Funktionszeigern oder Funktoren. Such danach.
-
Hi,
also ich hab da mal gesucht, aber es funktioniert irgendwie nicht wie es soll, jedenfalls meldet der compiler einige fehler

Ist hier irgendein formfehler drin?
class SockServer { public: // class constructor SockServer(); // class destructor ~SockServer(); void Server(int(*func)(*char, int)); }; void SockServer::Server(int(*func)(*char, int)) { }
-
void SockServer::Server(int(*func)(char*, int))So!
-
Ein Zeiger auf char ist char*, nicht *char!
Mach es mit einem typedef, ist einfacher:class SockServer { public: typedef (*handler) (char*, int); SockServer(); ~SockServer(); void Server(handler); }; void SockServer::Server(handler func) { func ("All your base are belong to us!", 42); }oder (wenn du dir die Möglichkeit offenhalten willst, Funktionsobjekte zu benutzen) nimm Boost.Function. Du brauchst dafür dann nur das typedef zu ändern.
-
ah ha! ... -.- dämlicher Fehler ... danke schön!
