Nochmal zum Thema Zeiger auf Memberfunktionen
-
Moin allerseits,
ich schlage mich mit dem Thema Zeiger auf Memberfunktionen herum. folgendes Problem:
In meiner Klasse ThresMaax habe ich (in der .h) folgendenden Funktionspointer deklariert:
typedef int (ThresMaax::*CalcThresholdFuncType)();Den möchte ich (in der .cpp) wie folgt nutzen:
CalcThresholdFuncType ThisFunc = &ThresMaax::AnyFunction; int x = ThisFunc();Der Compiler mault aber, weil er die letzte Zeile nicht als Funktionsaufruf erkennt (Visual C++ 7, Compilerfehler C2064)
F1!!!
Grusz,
Axel
-
Bei Memberpointern brauchst du ein Objekt mit dessen Hilfe du die Methode aufrufen kannst.
=>
ThresMaax m; int x = (m.*ThisFunc)();
-

Auch innerhalb der "eigenen" Klasse?
Oder, mit anderen Worten:
void ThresMaax::DoSomething() { ThresMaax m; int x = (m.*ThisFunc)(); }
-
Apoplex schrieb:
Auch innerhalb der "eigenen" Klasse?
Auch dort. Aber da kannst du ja *this benutzen.
-
Apoplex schrieb:
Auch innerhalb der "eigenen" Klasse?
Natürlich.
Du suchst wahrscheinlich folgendes:void ThresMaax::DoSomething() { int x = (this->*ThisFunc)(); }
-

Es funzt!
Vielen Dank, ich hätte fast meine Tastatur aufgefressen. Über dieses kleine Detail hat sich nämlich mein C++-Buch ("Die C++ Programmiersprache" von B. Stroustrup) ausgeschwiegen... *tilt*
Danke und Grusz,
Axel
-
MFK schrieb:
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung. "Irgendwie ganz komisch" auch nicht.
Du sprichst mir aus der Seele. Sowas bekomm ich irgendwie zu oft zuhören

BR
evilissimo