Instanznamen in variable speichern
-
Hallo
Ich habe folgendes Problem:
Ich instanziere eine klasse, und möchte im konstruktor den Instanznamen in eine Variable speichern, ungefähr so:
class Baum{ public: Baum(); }; Baum::Baum(){ string instanzname=this;//hier liegt das problem cout<<"Baumname:"<<instanzname<<endl; //sollte "Tanne" ausgeben } int main(){ Baum Tanne; }kann mir jemand helfen?
mfg kobauder
-
class Baum{ public: Baum(string name); }; Baum::Baum(string name) { string instanzname=name; cout<<"Baumname:"<<instanzname<<endl; } int main(int argc, char *argv[]) { Baum Tanne("Tanne"); return 0; }
-
danke, aber so ist mir schon klar das es geht
mein Ziel is es, dass man "Tanne" nicht zweimal hinschrieben muss
-
Ohne Tricks (Präprozessor) wohl garnicht...
-
ok,dann lass ich das lieber
trotzdem danke
-
Ich glaube, Du hast einen Denkfehler, was die Programmiersprache C++ betrifft. Was soll das denn dann bewirken:
Baum* tanne = new Baum();Hier wird ein Baum Konstruiert und dann - nach dem Konstruktor - ein Zeiger auf die Instanz einer Variablen zugewiesen. Da könnte man noch argumentieren, daß der Name "tanne" sein soll. Und was ist hier:
Baum* tanne = new Baum(); Baum* fichte = tanne;Soll die Instanz bei der Zuweisung seinen Namen ändern? Dann zeigt tanne aber auf eine Instanz mit dem Namen "fichte".
Oder noch besser:
new Baum();Einfach eine Instanz anlegen, ohne wie zuzuweisen. Da gibt es gar keinen Namen.
Also kurz gesagt: es geht nicht.
Tntnet