Name eines Klassenobjekts überladen
-
Hallo Leute,
gibt es eine Vorgehensweise, mit der sich der Objektname eines Klassenobjekts direkt als eine ihrer Member-Variablen interpretieren lässt?Beispiel:
class sonstwas { public: //die Konstruktoren //OK, meinetwegen ein paar Memberfunktionen int& sonstnefunktion(); {return istegal;} private: //mehrere Member-Variablen int istegal; };so, das will ich in main folgendermaßen gebrauchen können:
main() { sonstwas dieobjektinstanz; dieobjektinstanz.sonstnefunktion(); //soll das gleiche Ergebnis liefern wie: dieobjektinstanz; }Ist das möglich?
-
Hallo
nein, denn der Klassenname an sich ist ausschließlich dem Konstruktor vorbehalten.
bis bald
akari
-
kk, danke ):
-
Du könntest den operator() überladen, wäre aber auch nur ne Weiterleitung:
class sonstwas { public: //die Konstruktoren //OK, meinetwegen ein paar Memberfunktionen int& sonstnefunktion() {return istegal;} int& operator()() { return sonstnefunktion(); } private: //mehrere Member-Variablen int istegal; }; int main() { sonstwas dieobjektinstanz; dieobjektinstanz.sonstnefunktion(); //soll das gleiche Ergebnis liefern wie: dieobjektinstanz(); }
-
akari schrieb:
Hallo
nein, denn der Klassenname an sich ist ausschließlich dem Konstruktor vorbehalten.
bis bald
akari... wobei er hier über den "Variablennamen einer Instanz" (!= Ctor-Name) und nicht über den "Klassennamen" redet.

Ich denke, der Lord hat da schon technisch die richtige Antwort gegeben - allerdings wäre interessant, wozu benschi das verwenden möchte. Vielleicht gäbe es da noch passendere Möglichkeiten (oder eben ein gutes Argument, warum gerade der operator() das Richtige ist).
Gruß,
Simon2.