Ho qualche codice C++, in cui viene dichiarato il seguente enum:Esiste un paradigma noto per iterare i valori enum?
enum Some
{
Some_Alpha = 0,
Some_Beta,
Some_Gamma,
Some_Total
};
int array[Some_Total];
I valori di Alpha, Beta e Gamma sono sequenziali, e volentieri utilizzare il seguente ciclo per scorrere attraverso di loro:
for (int someNo = (int)Some_Alpha; someNo < (int)Some_Total; ++someNo) {}
Questo ciclo va bene, fino a quando decido di cambiare l'ordine delle dichiarazioni nell'enum, diciamo, rendendo Beta il primo valore e Alpha - il secondo. Ciò invalida l'intestazione del ciclo, perché ora devo ripetere da Beta a Total. Quindi, quali sono le migliori pratiche per iterare con enum? Voglio scorrere tutti i valori senza modificare le intestazioni del ciclo ogni volta. Mi viene in mente una soluzione:
enum Some
{
Some_Start = -1,
Some_Alpha,
...
Some_Total
};
int array[Some_Total];
e iterare da (Start + 1) al totale, ma sembra brutto e non ho mai visto qualcuno che fa nel codice. C'è qualche paradigma noto per iterare attraverso l'enum, o devo solo fissare l'ordine dei valori enum? (Facciamo finta, ho davvero alcune ragioni impressionante per cambiare l'ordine dei valori enum) ...
Potrebbe fornire un esempio su quando è necessario? O è puramente teorico? – Zed
Il mio codice dipende dalle decisioni del team dei progettisti. A volte cambiano idea sull'ordine degli elementi, presenti sullo schermo. Devo aggiornare i miei valori enum in base all'ordine corrente degli elementi ... – SadSido
Normalmente non cambierai l'ordine, se lo fai, le cose che si basano su quell'ordine (se stai usando enumerazioni alle due estremità di un sistema di comunicazione, scrivendo i valori su un file/database) si interromperà. –