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