Ausgabe der Speicheradresse einer Funktion ausgeben
-
Ich habe ein Problem mit den Funktionszeigern in meiner Klasse.
Headerdatei:
class ArithParser{ char operatoren[5]; int (*funktionsZeiger[5]) (int, int); public: ArithParser (); int Add(int op1, int op2); int Sub(int op1, int op2); int Div(int op1, int op2); int Mult(int op1, int op2); int Mod(int op1, int op2); };
Die header.cpp:
ArithParser::ArithParser (){ funktionsZeiger[0] = Add; funktionsZeiger[1] = Sub; funktionsZeiger[2] = Mult; funktionsZeiger[3] = Div; funktionsZeiger[4] = Mod; }
Beim kompilieren kommt dann folgende Fehlermeldung:
c:\Documents and Settings\Micha\My Documents\Visual Studio Projects\ArithParser\ArithParser.cpp(7) : error C2440: '=' : cannot convert from 'int (__thiscall ArithParser::* )(int,int)' to 'int (__cdecl *)(int,int)'
There is no context in which this conversion is possibleund zwar in 5 facher Ausfuehrung fuer jeder der Zeilen im Konstruktor. Meine Frage nun ist, kann ich Funktionszeiger auf Methoden ueberhaupt anwenden und wenn ja wie?
Hoffe ihr koennt mir da helfen.
gruss,
ich
-
Funktionszeiger können nicht auf nichtstatische Memberfunktionen gelegt werden (dafür gibts extra Memberzeiger). Du solltest mal prüfen, ob du die Funktionen nicht statisch machen kannst -- sie sehen nämlich nicht danach aus, als ob sie Zugriff auf die anderen Member der Klasse brauchen --, dann erübrigt sich das Problem.