Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
enum_class [2016/08/03 02:25] gbdivers |
enum_class [2016/08/23 00:45] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 140: | Ligne 140: | ||
</code> | </code> | ||
- | Il est egalement possible de convertir un nombre entier en valeur d'une enumeration avec "static_cast". | + | Il est également possible de convertir un nombre entier en valeur d'une enumeration avec "static_cast". |
<code cpp> | <code cpp> | ||
Ligne 147: | Ligne 147: | ||
</code> | </code> | ||
- | <note>**Anciennes syntaxe**s | + | <note>**Ancienne syntaxe** |
- | Sans le mot cle ''class''. Definit les enum dans la portee globale. | + | Meme syntaxe, sans le mot-clé ''class''. |
+ | |||
+ | <code cpp> | ||
+ | enum Couleur { | ||
+ | Noir, Blanc, Rouge, Jaune, Bleu, Orange, Vert, Violet | ||
+ | }; | ||
+ | |||
+ | Couleur une_couleur { Rouge }; // initialisation | ||
+ | une_couleur = Bleu; // affectation | ||
+ | </code> | ||
+ | |||
+ | Definit les enum dans la portee globale (//unscoped enum//). "Dans la portée globale" signifie qu'il n'est pas nécessaire d'indiquer la portée ''Couleur::''. Cela peut provoquer des conflits, par exemple : | ||
+ | |||
+ | <code cpp> | ||
+ | enum Pion { | ||
+ | Noir, Blanc | ||
+ | }; | ||
+ | |||
+ | enum Couleur { | ||
+ | Noir, Blanc, Rouge, Jaune, Bleu, Orange, Vert, Violet // confit | ||
+ | }; | ||
+ | </code> | ||
+ | affiche les erreurs suivantes : | ||
+ | |||
+ | <code> | ||
+ | main.cpp:8:5: error: redefinition of enumerator 'Noir' | ||
+ | Noir, Blanc, Rouge, Jaune, Bleu, Orange, Vert, Violet // confit | ||
+ | ^ | ||
+ | main.cpp:4:5: note: previous definition is here | ||
+ | Noir, Blanc | ||
+ | ^ | ||
+ | main.cpp:8:11: error: redefinition of enumerator 'Blanc' | ||
+ | Noir, Blanc, Rouge, Jaune, Bleu, Orange, Vert, Violet // confit | ||
+ | ^ | ||
+ | main.cpp:4:11: note: previous definition is here | ||
+ | Noir, Blanc | ||
+ | ^ | ||
+ | </code> | ||
+ | |||
+ | Ce type d'énumération ne nécessite pas de conversion explicite avec ''static_cast'' pour convertir en entier, les valeurs sont convertie implicitement (promotion) entiers. | ||
</note> | </note> | ||