Wie wir wissen, ist die Inkrementierung und Dekrementierung von enum
in C++ 03 illegal, weil C++ 03 enum
möglicherweise nicht kontinuierlich ist. Aber der C++ 11-Standard führte die neue enum class
-Konstruktion ein, die laut Wikipedia typsicherer ist, da sie nicht auf einem einfachen zählbaren Typ aufgebaut ist. So, jetzt, wenn wir eine beschränkte Liste von Werten eines ENUM haben, können wir etwas schreiben wieInkrementieren und Dekrementieren von "Enum-Klasse"
enum class Colors { Black, Blue, White };
// ...
Colors color = Colors::White;
color++;
und wird es korrekt funktionieren (z Inkrementierung White
kehrt Black
und Dekrementierung von Black
kehrt White
)?
Wenn wir nicht einen solchen Code schreiben können, wissen Sie Verhalten artigen Klassen entweder aus boost
oder von Qt
, die uns zur Verfügung stellen diese Funktion (korrekte Ein- und Erniedrigen)?
Es gibt nichts zu sagen, dass die Werte der Klasse enums zusammenhängend sind. Insofern entsprechen sie C++ 03 enums. – juanchopanza
mögliches Duplikat von [Using enum in Schleifen und Wertkonsistenz] (http://stackoverflow.com/questions/13971544/using-enum-in-loops-and-value-consistency) –
Eine weitere Frage hinzugefügt; Bitte lesen Sie. –