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


Anmelden zum Antworten