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 functions
    

    ohne den "this" Pointer erhalte ich

    error: cannot call member function `void MyClass::dumpMemory()' without object
    

    in 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?


  • Administrator

    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_


Anmelden zum Antworten