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