Christian schrieb:
> Irgendwie verstehe ich denn Sinn des typedef hier nicht.
> Kann mir mal einer auf die Sprünge helfen
typedef vec(value)(situation&);
Der typedef besagt, dass es einen Datentyp namens value gibt.
Ein 'value' ist eine Funktion die eine Referenz auf situation& als
Argument akzeptiert und einen vec zurückliefert.
Höchst wahrscheinlich wirst du irgendwo im Programm eine
Pointer-Variable finden
value* ptrFunc;
Das ist dann ein Funktionspointer. Diesem Pointer kann die Adresse einer
Funktion zugewiesen werden. zb so
ptrFunc = Jammer;
und die Funktion dann über den Pointer aufgerufen werden
situation CurrentSituation;
vec Result;
Result = ptrFunc( CurrentSituation );
Soetwas hat man in C gerne gemacht um sog. Callbacks zu realisieren.
Denk zb an qsort. qsort benötigt neben den eigentlichen Daten auch noch
eine Funktion, welche für 2 Datenfelder einen Kleiner-Vergleich
durchführt. Da dieser Vergleich aber vom genauen Aufbau der Daten
abhängt, kann er nicht in qsort selbst gemacht werden. Daher muss man
qsort auch noch die Adresse einer Funktion übergeben, welche das
erledigt.
In C++ kann man die Sache mit Funktionspointern auch weiterhin so
machen. Allerdings ist es oft vernünftiger, wenn die Callback
Funktionalität über ein Interface eingefordert wird.