Function Pointer returnen
-
Habe nochmal ein Frage zu funtion pointer's.
Wenn man einen fp returnen will, sieht das so aus:float Plus(float a,float b){return a+b;} float Minus(float a,float b){return a-b;} typedef float(*pt2Func)(float, float); // function takes a char and returns a function pointer which is defined as a // type above. <opCode> specifies which function to return pt2Func GetPtr2(const char opCode) { if(opCode == '+') return &Plus; if(opCode == '-') return &Minus; } // execute example code void Return_A_Function_Pointer() { cout << endl << "Executing 'Return_A_Function_Pointer'" << endl; float (*pt2Function)(float, float); // define a function pointer pt2Function=GetPtr1('+'); // get function pointer from function 'GetPtr1' cout << pt2Function(2, 4) << endl; // call function using the pointer pt2Function=GetPtr2('-'); // get function pointer from function 'GetPtr2' cout << pt2Function(2, 4) << endl; // call function using the pointer }
1. Warum muss ich erst einen Zeiger pt2Function deklarieren, der auf die Funktion GetPtr zeigt?
2.Warum kann ich mit der Funktion pt2function Werte (2,4) an GetPtr uebergeben?
GetPtr hat doch nur das Argument des Rechenzeichens und returned nur einen Zeiger auf eine Funktion, die diese beiden Parameter bietet.3.Wenn es nun anscheinend doch moeglich ist, dass pt2func die beiden floats an GetPtr uebergeben uebergibt, wie kann dann GetPtr die Argumente quasi weitergeben? In der Definition sind doch nur die Addressen von &Plus, &Minus.
Danke im schonmal Voraus
-
pt2Function zeigt nicht auf GetPtr, sondern auf die Funktion die von GetPtr zurückgegeben wird.
typedef void (*foo)(); void foo1() { } foo foo2() { return foo1; } foo a1 = foo1; //foo1 foo a2 = foo2();//foo1
-
Oh Mann, hab den Wald vor lauter Baeumen nicht gesehen.
War jetzt immer gewohnt, dass die Adresse einer Funktion zugewiesen wird.
Aber diesmal ist es nicht die Funktion selbst, sondern der return-value.Danke.