Probleme mit static und member functions
-
Hey @all,
ich habe eine static member function sowie eine normale member function
static void updateObjects(); void dumpMemory();Nun würde ich gerne von "updateObjects();" die Funktion dumpMemory aufrufen.
wenn ich in updateObjects den this pointer verwende passiert genau das was es machen sollen, nämlich:error: `this' is unavailable for static member functionsohne den "this" Pointer erhalte ich
error: cannot call member function `void MyClass::dumpMemory()' without objectin dumpMemory(); wird zudem auch auf Variablen der Klasse zugegriffen.
Wie kann ich innerhalb von "updateObjects" die funktion "dumpMemory" aufrufen?Lg _freeze_
-
So z.B. Aber wozu soll das gut sein?
void XY::updateObjects(XY& obj) { obj.dumpMemory(); } //... XY a; XY::updateObjects(a);static Methoden haben keinen this-Zeiger, weil sie ja eben nicht an konkrete Objekte gebunden sind. Wenn Du eine Methode für ein konkretes Objekt aufrufen willst, solltest Du auch Membermethoden benutzen.
-
freeze schrieb:
Nun würde ich gerne von "updateObjects();" die Funktion dumpMemory aufrufen.
Von welchem Objekt?
-
Die static Methode gehört zur Klasse und somit zu keinem Objekt. Während die nicht-static Methode zu einem Objekt gehört. Dadurch kannst du nicht aus einer static Methode eine Methode eines Objektes aufrufen, ausser du machst etwas in der Art:
class CFoo { static update(CFoo& rFoo) { rFoo.dump(); }; void dump() { /* whatever */ }; }Grüssli
-
Vielen Dank für die schnellen Antworten, hat prima funktioniert
Lg _freeze_