A differenza di altri linguaggi più moderni, in C++ i valori dei tipi enumerati non sono racchiusi dal namespace del tipo; ad esempio, in C++:
typedef enum { A, B, C } AutomaState;
....
AutomaState automaState( A );
...
automaState = B;
...
if ( automaState == C ) ...
Qui si definisce un enumerato AutomaState, a cui sono associati gli stati A, B e C. La sintassi non è particolarmente chiara, e non c'è nessun "legame" tra il nome AutomaState ed i suoi stati...
Racchiudendo invece in un namespace la definizione del tipo, si riesce ad ottenere un risultato molto più elegante:
namespace AutomaState
{
typedef enum { A, B, C } type;
}
...
AutomaState::type myAutoma( AutomaState::A );
...
myAutoma = AutomaState::B;
...
if ( myAutoma == AutomaState::C ) ...
Utilizzando poi come standard il nome type per la definizione del tipo, si rende l'utilizzo del costrutto intuitivo e uniforme.
1 commento:
post per niente chiaro. a che cavolo serve enum??????
Posta un commento