Jak wiemy, inkrementacja i dekrementacja enum
w C++ 03 jest nielegalna, ponieważ C++ 03 enum
może nie być ciągła. Ale standard C++ 11 wprowadził nową konstrukcję enum class
, która według Wikipedii jest bardziej bezpieczna dla typów, ponieważ nie jest zbudowana na żadnym prostym rodzaju policzalnym. Więc teraz, jeśli mamy ograniczony wykaz wartości wyliczenia, możemy napisać coś podobnegoInkrementacja i dekrementacja "klasy enum"
enum class Colors { Black, Blue, White };
// ...
Colors color = Colors::White;
color++;
i będzie działać prawidłowo (np zwiększanie stanu White
powróci Black
i dekrementacja z Black
powróci White
)?
Jeśli nie możemy napisać taki kod, znasz jakieś zajęcia podobnego zachowania albo z boost
lub z Qt
które zapewniają nam tę funkcję (poprawne in- i dekrementacyjny o wartości)?
Nie ma nic do dodania, że wartości wyliczenia klas są ciągłe. Pod tym względem są one takie same jak wyliczenia C++ 03. – juanchopanza
możliwy duplikat [Używanie enum w pętlach i spójność wartości] (http://stackoverflow.com/questions/13971544/using-enum-in-loops-and-value-conistency) –
Dodano jeszcze jedno pytanie; proszę przeczytaj. –