Funktionszeiger erstellen, Arrays aus Funktionszeigern
-
Hi @all!
Ich habe folgendes Problem:
Ich möchte während der Laufzeit eine beliebige Abfolge von Funktionen festlegen können. Ich dachte da an sowas wie die Abfolge in Array speichern, und dann z.B. mit Funktion[1] die Funktion die in 1 gespeichert ist. Ich hab da mal sowas von Funktions-Pointer gehört, weiß aber nichts genaueres. Gibt es da irgendeine Möglichkeit?? Der vorteil beim Array wär halt dass ich dann z.B. mit einer For-Schleife die Funktionen nacheinander Ausführen kann....Wäre für eine Antwort echt dankbar!!!
[ 09.07.2001: Beitrag editiert von: class CMarcus ]
-
Hallo,
du kannst Funktionspointer in einem Array speichern. Diese müssen aber den selben Typ haben:
Bsp:... typedef void (*pFunc)(); void Func1() { //... } void Func2() { //... } int main() { pFunc Arr[2]; Arr[0] = &Func1; Arr[1] = &Func2; int i; for (i = 0; i < 2 ; i++) { Arr[i](); } return 0; }
Gruß
---editiert zu Testzwecken
[ 07.07.2001: Beitrag editiert von: class CMarcus ]
-
und wie macht man das, wenn die funktionen parameter erwarten?
-
Hallo,
...dann ändert man den typedef.
Bsp:
typedef int (*pFunc)(int, float);Gruß
-
Hallo,
typedef int (*pFunc)(int, double); int Func1(int x, double y) { cout << "Func1 " << x << " " << y << endl; return 5; } int Func2(int x, double y) { cout << "Func2 " << x << " " << y << endl; return 7; } int main() { pFunc Functions[2]; Functions[0] = &Func1; Functions[1] = &Func2; int Ret = Functions[0](5, 6.0); Ret = Functions[1](12, 18.0); return 0; }
Gruß