Affectation aux types enum

De RAD Studio
Aller à : navigation, rechercher

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