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; } };