Maison >développement back-end >C++ >Erreur de syntaxe C++ : les identifiants dans les énumérations doivent être des constantes entières, comment la résoudre ?
Lors de la programmation en C++, vous rencontrerez parfois le message d'erreur de syntaxe "Les identifiants dans les énumérations doivent être des constantes entières". Cet article explique les causes de ce problème et les solutions possibles.
Tout d’abord, nous devons clarifier ce qu’est une énumération. En C++, une énumération est un type de données spécial utilisé pour définir une collection de constantes avec des valeurs discrètes. Chaque constante de l'énumération se voit attribuer une valeur entière, la première constante étant par défaut 0 et les constantes restantes incrémentées en séquence. Par exemple :
enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};
Dans le code ci-dessus, Weekday est le nom de ce type d'énumération, lundi, mardi, etc. sont ses constantes membres, et des valeurs entières leur sont attribuées respectivement de 0 à 6.
Cependant, lorsque nous définissons par erreur la valeur d'une constante membre comme une constante non entière lors de la définition d'une énumération, comme une chaîne ou un nombre à virgule flottante, la syntaxe "les identifiants dans l'énumération doivent être des constantes entières" apparaîtra. Message d'erreur. Par exemple :
enum Fruit {Apple = 1, Banana = 2, Orange = "orange"}; //错误!
Dans le code ci-dessus, Orange est défini comme une constante de chaîne, donc une erreur sera signalée lors de la compilation.
Alors, comment résoudre ce problème ? Une solution de contournement simple consiste à spécifier explicitement des valeurs entières pour toutes les constantes membres au lieu d'utiliser la méthode d'incrémentation par défaut. Par exemple :
enum Fruit {Apple = 1, Banana = 2, Orange = 3};
Dans le code ci-dessus, nous spécifions manuellement une valeur entière pour chaque constante membre afin d'éviter les erreurs avec des constantes non entières.
Une autre solution consiste à utiliser une classe enum au lieu d'une énumération normale. Les classes d'énumération sont plus strictes que les énumérations ordinaires et ne permettent pas la conversion implicite de valeurs entières, évitant ainsi les erreurs ci-dessus. Par exemple :
enum class Fruit {Apple = 1, Banana = 2, Orange}; //Orange自动被分配整数值3
Dans le code ci-dessus, nous avons utilisé la classe enum pour définir une énumération de type Fruit, et aucune valeur entière n'a été spécifiée pour Orange, mais la valeur entière 3 lui a quand même été attribuée car il s'agit de la définition du comportement de l'énumération. classe .
En bref, lorsque nous rencontrons l'erreur de syntaxe « les identifiants dans les énumérations doivent être des constantes entières » dans la programmation C++, nous pouvons résoudre ce problème en spécifiant explicitement la valeur entière de la constante membre ou en utilisant une classe d'énumération.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!