statische const Funktion



  • Hallo,

    ist es nicht möglich eine statische Funktion zu schreiben, die ein
    konstantes Objekt zurückliefert?

    Also so etwa:

    static MyObj& getObj() const;
    

    Hier krieg ich nämlich nen Compiler-Fehler, der mir das const verbietet.
    Ohne geht es dann...

    Gibt es ne andere Möglichkeit?

    Gruß,
    Manuel



  • Hm .. ich verstehe nicht ganz, wieso du das brauchst.
    Ich nehme an, die Funktion ist Teil einer Klasse - also eine Methode.
    static Methoden sind nicht Objektgebunden, damit meine ich, dass sie sich nicht auf eine konkrete Instanz der Klasse beziehen. Dadurch können sie keine nicht-static Elemente der Klasse lesen oder gar schreiben.
    Eine const Methode zeichnet sich dadurch aus, dass sie keine Elemente (Member) der Klasse verändern kann / darf. Sie bezieht sich aber sehr wohl auf eine konkrete Instanz der Klasse - denn das Lesen von Elementen ist wohl möglich.
    Von daher schließt die static foobar() const; deklaration einander aus.

    Ich denke du meintest etwas der Art: static const MyObj& getObj();
    Damit gibst du eine const-Referenz auf ein MyObj zurück.



  • Danke Dennis...

    Bor, bin ich blöd...



  • Klar kann eine statische Methode ein konstantes Objekt zurückliefern.

    class foo
    {
    public:
        static foo const bar()
        {
            return foo();
        }
    
        static foo const& baz()
        {
            static foo f = foo();
            return f;
        }
    };
    

    🙂


Anmelden zum Antworten