Traduzioni di questa pagina?:

enum

C/C++ Sintassi:

    enum name {name-list} var-list;

Parola chiave enum viene usata per creare un tipo numerato di nome name che consiste di tutti gli elementi nella name-list. L'oargomento var-list è opzionale e può essere usato per creare istanze del tipo di dato definito dalla dichiarazione. Esempio: il frammento di codice che segue crea un enum per elencare dei colori.

     enum ColorT {red, orange, yellow, green, blue, indigo, violet};
     ...
     ColorT c1 = indigo;
     if( c1 == indigo ) {
       cout << "c1 is indigo" << endl;
     }

Nell'esempio sopra l'effetto dell'enumerazione è quello di introdurre nuove costanti chiamate red,orange,yellow,etc. Per default a queste costanti vengono assegnati valori interi consecutivi a partire dallo zero. Si può cambiare questo comportamento forzando determinati valori.

     enum ColorT { red = 10, blue = 15, green };
     ...
     ColorT c = green;
     cout << "c is " << c << endl;

L'output del codice sarebbe:

     c is 16

L'esempio precedente verrebbe compilato solo con un compilatore C++. Se foste nella condizione di dover lavorare anche con codice C avreste bisogno di specificare la parola chiave enum dovunque create un'istanza dell'enumeratore.

     enum ColorT { red = 10, blue = 15, green };
     ...
     enum ColorT c = green;   /* note the additional enum keyword */
     printf( "c is %d\n", c );

Alternativamente si può aggiungere un typedef per fare in modo funzioni sia in C che C++.

     typedef enum ColorT { red = 10, blue = 15, green } ColorT;
     ...
     ColorT c = green;   /* no more additional enum keyword */
     printf( "c is %d\n", c );
__C++__

In C++ è possibile anche confrontare qualunque nome presente nella lista di un qualsiasi enum con una variabile di tipo intero.

enum colore{ BIANCO, NERO };
...
std::cin >> variabile;
switch( variabile )
{
     case BIANCO: std::cout << "Hai inserito il numero corrispondente al colore bianco" << std::endl; break;
     case NERO: std::cout << Hai inserito il numero corrispondente al colore nero" << std::endl; break;
     default: std::cout << "Inserisci: " << BIANCO << "per bianco\n" << NERO << "per nero" << std::endl; break;
}