Używam zmiennej członka i w pewnym momencie programu chcę ją zmienić, ale wolę ją "zablokować" wszędzie indziej, aby zapobiec niezamierzonym zmianom.Czy zmienna może być zablokowana, aby zapobiec zmianom w C++?
Kod wyjaśnić:
class myClass {
int x; // This should be prevented to being changed most of the time
int y; // Regular variable
myclass() {x = 1;}
void foo1() {x++; y++;} // This can change x
void foo2() {x--; y--;} // This shouldn't be able to change x
// I want it to throw a compile error
};
Pytanie brzmi: Czy to może być osiągnięte w jakiś sposób? Coś jak stały const_cast?
Wiem, że mógłbym użyć listy inicjalizacyjnej konstruktora i stałej od razu, ale muszę zmienić moją zmienną później.
zrobić to prywatne i zmienić tylko wtedy, gdy chcesz? – Chad
Chcesz, aby implementacja nie zmieniła x, lub chcesz uniemożliwić komukolwiek wywoływanie metody? – Joe
@Joe: Chcę rzucić błąd podczas kompilacji. – Petr