Zeiger auf Funktion an andere Funktion übergeben
-
Hallo,
ich habe verschiedene Funktionen, sagen wir f1, f2, ... fn. (Alle haben dieselben Übergabewerte...) Ich habe nun auch noch eine Funktion g, die eine von diesen Funktionen f1,...fn zur Laufzeit zugewiesen bekommen soll und dann weiteres damit machen.
Wie übergebe ich nun eine dieser Funktionen fi an die Funktion g?(Also wie muss die Signatur von g aussehen, wie der Zeiger auf fi und wie der Aufruf von g?)
Danke und mfG,
Matthias
-
-
void f1() { cout<<"f1"; } void f2() { cout<<"f2"; } void f3() { cout<<"f3"; } void (*g[3]) () = { f1,f2,f3 }; int main() { g[1](); return 0; }Einfach von g den index ändern um an die anderen Funktionen zu kommen

-
Freak_Coder schrieb:
Einfach von g den index ändern um an die anderen Funktionen zu kommen

Sorry aber das ist es nicht was ich brauche, ich will nämlich AN eine Funktion g eine der Funktionen f1,f2,...fn übergeben, und g macht dann noch was damit! Hoffe der Unterschied ist klar...
-
void (*g) () = f1; ... g = f2; ... g = fn;Das du meinen

Dann ganz normal g(); um die aktuelle Funtkion auf die g zeigt aufzurufen.
-
Nein nein, g selber soll nicht auf eine Funktion zeigen! g soll eine eigene Funktion sein, die einen Zeiger auf die Funktionen BEKOMMT.
also
g( /*Zeiger auf Funktion*/ ) { /*irgendwas mit der Funktion mach*/ } int main() { /*Meinem Zeiger eine der Funktionen f zuweise*/ g(/*Zeiger*/) }Sorry für den schrecklichen Pseudocode

-
Naja wie ein Funktionszeiger aussieht weisst Du doch jetzt:
void(*g)()Den darfst Du ohne zu fragen in Deine Funktion einbauen

void g(void(*f)()) { f(); }Habe die Variable "g" nur "f" genannt weil die Funktion schon "g" heisst

-
Guck auch hier nach:
http://www.cs.wisc.edu/~siff/CS367/Notes/fp.html