En révisant du vieux code, j'ai remarqué les deux constructions étranges suivantes utilisant des enums (deux fichiers/classes/espaces de noms différents, je les ai juste rassemblés ici) :
enum FirstEnum
{
A_CHOICE
,ANOTHER_CHOICE=1
,YET_SOME_OTHER_CHOICE
};
enum SecondEnum
{
FIRST_CHOICE
,SECOND_CHOICE
,THIRD_CHOICE
,DEFAULT_CHOICE=SECOND_CHOICE
};
Je pense que les deux constructions sont erronées.
Le premier attribue une valeur à l'un des choix, mais pas aux autres, ce qui signifie que les choses peuvent mal tourner si de nouveaux choix sont ajoutés.
Dans le second cas, nous nous retrouvons avec deux éléments d'énumération ayant la même valeur sous-jacente.
Y a-t-il une raison pour laquelle la norme C++ autorise les deux constructions ?
(en utilisant Visual Studio 2010)