Adresse einer Funktion einer Funktion übergeben
-
Hallo.
Ich brauche eine Funktion a die eine Adresse v. einer anderen Funktion entgegen nimmt.Funktion a soll dann mithilfe der übergebenen Adresse die jeweilige zu der Adrsse gehörende Funktion aufrufen.
Wie macht man so etwas?
-
grundsätzlich so:
void foo (void (*fun) ()) { fun(); } void bar () { cout << "fubar\n"; } int main () { foo (bar); }
mit memberfunktionen sieht das schon anders aus, die müssen nämlich an ein objekt gebunden sein.
viele leute machen sich auch gerne typedefs für sowas
typedef void (*fun_t) (); void foo (fun_t fun) { fun(); }
allerdings stellt sich die frage, ob du nicht lieber irgendwelche wrapper verwenden willst.
-
hi,
das musst du mit generischen Funktionen machen
int Berechne(int a, int b, int (*func) (int,int)) { return func(a,b); } int Addition(int a, int b) { return a+b; } int main() { int c; c=Berechne(2,3,Addition); }