Bien que qqch réponde à la question, il n'a pas abordé la façon dont j'ai toujours utilisé les enums. Même s'il s'agit plus ou moins de noms pour des nombres, je les ai toujours utilisés pour définir des types qui ne peuvent avoir que certaines valeurs.
Si l'énumération fait partie de la classe, cela aide les consommateurs à identifier clairement une référence à une énumération :
class Apple {
enum Variety {
Gala,
GoldenDelicious,
GrannySmith,
Fuji
}
...
};
Les consommateurs pourraient alors déclarer des instances de l'enum, les passer comme paramètres et les qualifier lorsqu'ils font référence à l'un des types.
unsigned int GetCountOfApples( Apple::Variety appleVariety );
...
fujiCnt = GetCountOfApples( Apple::Fuji );
Parfois, vous voulez un enum en dehors d'une classe ou deux enums dans la même classe, et vous pouvez faire quelque chose comme ce que Poy avait. Cependant, vous ne pourrez pas référencer le type d'enum, il suffit de le nommer.
namespace Color {
enum ColorEnum {
Blue,
Red,
Black
};
Maintenant, l'utilisation de l'enum et des valeurs fonctionnerait comme suit :
Color::ColorEnum firstColor = Color::Blue;
Color::ColorEnum secondColor = Color::Red;
if( firstColor == secondColor )
....
Maintenant, s'il y a différents enums avec le même nom, ils seront toujours qualifiés avec le type qu'ils sont. Vous pourriez alors gérer la question de Gamblor.
BananaColorEnum banCol = BananaColor::Yellow;
TomatoColorEnum tomCol = TomatoColor::Yellow;