Pointeurs, références & allocation dynamique Rappels sur les fonctions Les spécificités du C++ Structures et classes Encapsulation des données Notions de constructeur et de destructeur Fonctions et classes amies Surcharge d'opérateur Héritage Notions de patrons de fonctions et de classes Introduction à la librairie standard STL
Compilation et directives de préprocesseur Convention d'écriture et organisation des programmes Écriture/lecture sur l'entrée/sortie standard Les membres données statiques Utilisation de enum et de typedef
Retour menu principal

L’énumération enum & Utilisation de typedef


Énumération enum

Une énumération est une collection finie d’entiers auxquels on a donné à chacun un nom explicite. Une variable de cette énumération ne peut posséder qu’un entier de cette collection et aucun autre entier.

Comme pour les commandes du préprocesseur, l’instruction définissant une énumération tient surtout d’un raffinement syntaxique permettant de remplacer des valeurs constantes par un nom plus lisible (pour un humain…). L’énumération

  • améliore la lisibilité du code,
  • rajoute un niveau de sécurité dans les valeurs saisies par l’utilisateur. Seuls les entiers appartenant à l’énumération seront valides.

Une énumération est généralement employée lorsque l’objet du monde réel qu’elle modélise possède des valeurs ou des états très simples totalement discrets (un feu tricolore, le code génétique ATCGU, les quatres saisons…).

Le mot clé est enum

enum nome_numeration {
  ELEMENT_1, // 0 par défaut
  ELEMENT_2, // valeur 1
  ...
};

Exemple:

enum Simpson {
  eHOMER,
  eMARGE,
  eBART,
  eLISA,
  eMAGGIE
};

La déclaration se fait via nom_enumeration instance_enum, soit pour notre exemple

Simpson personnage_Simpson_1 = eHOMER;

Utilisation de typedef

typedef permet de créer son propre type en se calquant sur un type existant (int, double, char…). typedef ne crée pas de nouveau type, il construit une forme d’alias. Cette fonctionnalité du C++ permet ainsi

  • d’améliorer la lisibilité du code,
  • au début d’un projet, de définir un nouveau type via typedef, modifier cet alias sans avoir à changer l’appel vers les variables usant de ce type.

Sous certaines conditions, l’utilisation de typedef peut rendre plus délicate la lecture du code pour une personne indépendante du projet. Tout le monde est habitué à int et non à MonTypedefEntierQueJaimeBien

Exemple :

typedef int mon_typedef_entier;
mon_typedef_entier entier_test = 1; // Equivalent à int