Come sappiamo, l'incremento e il decremento di enum
in C++ 03 non sono consentiti, poiché C++ 03 enum
potrebbe non essere continuo. Ma lo standard C++ 11 ha introdotto la nuova costruzione enum class
, che, secondo Wikipedia, è più sicura dal punto di vista del tipo perché non è costruita su alcun tipo numerabile semplice. Così ora, se abbiamo un elenco limitato di valori di un enum, possiamo scrivere qualcosa comeIncremento e decremento della "classe enum"
enum class Colors { Black, Blue, White };
// ...
Colors color = Colors::White;
color++;
e c'è funzionare correttamente (ad esempio Incremento delle White
tornerà Black
e decremento di Black
tornerà White
)?
Se non possiamo scrivere tale codice, fai a sapere tutte le classi di comportamento simile sia da boost
o da Qt
che ci forniscono questa funzione (corretta in- e decremento)?
Non c'è niente da dire che i valori delle enumerazioni di classe siano contigui. In questo senso, sono uguali alle enumerazioni di C++ 03. – juanchopanza
possibile duplicato di [Utilizzo di enum in cicli e coerenza dei valori] (http://stackoverflow.com/questions/13971544/using-enum-in-loops-and-valor-consistency) –
Aggiunta un'altra domanda; si prega di leggere. –