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> | ||