const getter



  • Hallo,

    der folgende getter soll const sein, nun habe ich Probelme einen String der Klasse zurückzugeben.

    class Object
    {
    private:
    std::string name;
    ...c
    }

    std::string& Object::getName() const
    {
    return this->name;
    }

    Wie kann ich das Problem lösen, ohne dass ich const entfernen muss? Warum funktioniert es nicht und kann ich das mit einem const_cast o.ä. lösen?

    LG



  • "Ein Problem", "funktioniert nicht"?



  • julja schrieb:

    und kann ich das mit einem const_cast o.ä. lösen?

    ein const_cast ist gerade das, was du *nicht* machen möchtest.

    eine "const" Methode zeichnet aus, dass sie den Zustand der Instanz nicht ändert, also die Werte der Membervariablen nicht verändert.

    Spontan würde ich tippen, dass du dir mal den Rückgabetyp ganz genau ansehen solltest. Vielleicht lässt sich damit dein nicht näher beschriebenes Problem lösen...

    viele Grüße
    Felix



  • Bonusfrage:

    Was macht:

    Object o;
    auto &name = o.getName();
    name = "höhöhö";
    std::cout << o.getName() << "\n";
    

    Und vor allem: soll das durchgehen?

    Tipp: du kannst auch konstante Referenzen zurückgeben (2x const in der Zeile):

    const std::string& Object::getName() const
    

    Oder gib einfach std::string statt der Referenz zurück.


Log in to reply