Langage C++/Enumérations

Une page de Wikiversité.


Enumérations
Computer-aj aj ashton 01.svg
Chapitre 11
Leçon : Langage C++
Chap. préc. : Portée du code
Chap. suiv. : Structures, unions et champs de bits
Icon falscher Titel.svg

En raison de limitations techniques, la typographie souhaitable du titre, « Langage C++ : Enumérations
Langage C++/Enumérations
 », n'a pu être restituée correctement ci-dessus.

[modifier] Énumérations

En C++ les énumérations servent à créer des liste de constantes entières. Cela permet de regrouper des constantes d'un même contexte dans un même type. Pour des raisons de clarté il est préférable de définir chaque énumérations dans un fichier d'entête propre. Pour des raisons de conception objet il est nécessaire de typer l'énumération à l'aide du mot clé "typedef". Enfin pour des raisons d'interférences il est conseillé de cloisonner l'énumération à un namespace.


Définition

namespace <NomNamespaceEnum>
{
     typedef enum
     {
          <NomConstante0> [[= <ValeurConstante0>] [,
          [...]
          <NomConstanteN-1> [= <ValeurConstanteN-1>]]
     }<NomTypeEnum>;
}

Où <NomNamespaceEnum> est le nom du namespace qui encapsulera la portée des constantes énumérées, <NomConstante0> et <NomConstanteN-1> sont les identifiants des constantes, <ValeurConstante0> et <ValeurConstanteN-1> sont les valeurs respectivement de <NomConstante0> et <NomConstanteN-1> et <NomTypeEnum> est le type de l'énumération.

Il est à noter que les valeurs des constantes sont facultative. Sans aucune précision la valeur d'une constante est la valeur de la constante précédente augmenté de 1, la première valeur étant par défaut "0". Il faut aussi savoir qu'il ne peut y avoir qu'un identifiant pour une valeur donnée.


Exemple

namespace NECouleursCartes
{
     typedef enum
     {
          Pique,
          Coeur,
          Trefle,
          Carreau
     }ECouleursCartes;
}


Exemple

int main(int argc, char* argv[])
{
     NECouleursCartes::ECouleursCartes vMaCouleurCarte;
     vMaCouleurCarte = NECouleursCartes::Coeur;
     return 0;
}
Crystal Clear action back.png Portée du code