Affectation aux types enum
Remonter à Enumérations - Index
Les règles concernant des expressions impliquant des types enum sont plus rigoureuses. Le compilateur applique ces règles avec des messages d'erreur si le commutateur -A de compilation est activé (strictement ANSI C++).
L'affectation d'un entier à une variable de type enum provoque une erreur :
enum color { red, green, blue }; int f() { color c; c = 0; return c; }
Il en est de même lors du passage d'un entier en tant que paramètre à une fonction. Notez que le type de résultat de l'expression flag1|flag2
est int :
enum e { flag1 = 0x01, flag2 = 0x02 }; void p(e); void f() { p(flag1|flag2); }
Pour rendre l'exemple compilable, l'expression flag1|flag2
doit être transtypée en type enum : (e)(flag1|flag2)
.