Sto leggendo un valore enum
da un file binario e vorrei verificare se il valore è realmente parte dei valori enum
. Come posso farlo?Come verificare se il valore enum è valido?
#include <iostream>
enum Abc
{
A = 4,
B = 8,
C = 12
};
int main()
{
int v1 = 4;
Abc v2 = static_cast<Abc>(v1);
switch (v2)
{
case A:
std::cout<<"A"<<std::endl;
break;
case B:
std::cout<<"B"<<std::endl;
break;
case C:
std::cout<<"C"<<std::endl;
break;
default :
std::cout<<"no match found"<<std::endl;
}
}
Devo usare l'operatore switch
o c'è un modo migliore?
EDIT
ho valori enum impostati e, purtroppo, non posso modificare. Per peggiorare le cose, che non sono continui (i loro valori va 0, 75,76,80,85,90,95,100, etc.)
Qualsiasi enum è solo un numero, quindi non penso che ci sia modo migliore per controllarlo. Probabilmente dovresti definire una struttura più rigida per i tuoi tipi di dati. – Rizo