const private field

0

Witam,

 class Vehicle
{
private:
    const string name;
public:
    Vehicle():name("Vehicle"){};
    Vehicle(const string &name):name(name){};
    const string &getName() const
    {
        return name;
    }
    string setName(const string &name)
    {
        // ???
    }
};

Zdefiniowałem pojedyncze pole klasy jako const string. Czy jedynym sposobem na inicjalizacje takiej zmiennej odbywa się poprzez listę inicjalizującą konstruktora? Jak w takim razie ustawić metodę setName? Czy to w ogóle możliwe? Chodzi mi o dobry styl programowania, wiem, że jeżeli zdejmę const to wszystko będzie grało, ale staram się być dociekliwy. Dzięki za odpowiedź.

0

A co niby miałby robić setter dla pola które jest const? o_O Skoro jest const to jest stałe i już! Nie mozna go zmienić! Dobry styl programowania wymaga żebyś myślał.

0

W ogóle dałem string zamiast void w setName.. Dzięki ;)

0

Dodam tylko, że metoda getName nie powinna zwracać referencji. Zwracanie referencji może prowadzić do dziwnych sytuacji gdy np. obiekt typu Vehicle zostanie usunięty a programista będzie operował na referencji do czegoś, co nie istnieje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0