Enums ou type énuméré (énumération) est un type de données défini par l'utilisateur auquel des valeurs limitées peuvent être attribuées. Ces valeurs sont définies par le programmeur au moment de la déclaration du type énuméré.
Besoin d'une classe Enum sur un type Enum :
Vous trouverez ci-dessous quelques-unes des raisons expliquant les limites du type Enum et pourquoi nous avons besoin de la classe Enum pour les couvrir.
1.Enum est une collection de constantes entières nommées, ce qui signifie que chaque élément est attribué par une valeur entière. 2.Il est déclaré avec le mot-clé enum.
C++
#include> using> namespace> std;> enum> roll_no {> >satya = 70,> >aakanskah = 73,> >sanket = 31,> >aniket = 05,> >avinash = 68,> >shreya = 47,> >nikita = 69,> };> int> main()> {> >enum> roll_no obj;> >obj = avinash;> >cout <<>'The roll no of avinash='> << obj;> }> |
>
>
désinstaller le CLI angulaireSortir
The roll no of avinash=68>
Deux énumérations ne peut pas partager les mêmes noms :
RPC
#include> using> namespace> std;> int> main()> {> >// Defining enum1 Gender> >enum> Gender { Male,> >Female };> >// Defining enum2 Gender2 with same values> >// This will throw error> >enum> Gender2 { Male,> >Female };> >// Creating Gender type variable> >Gender gender = Male;> >Gender2 gender2 = Female;> >cout << gender << endl> ><< gender2;> >return> 0;> }> |
>
>
Erreur de compilation:
prog.cpp:13:20: error: redeclaration of 'Male' enum Gender2 { Male, ^ prog.cpp:8:19: note: previous declaration 'main()::Gender Male' enum Gender { Male, ^ prog.cpp:14:20: error: redeclaration of 'Female' Female }; ^ prog.cpp:9:19: note: previous declaration 'main()::Gender Female' Female }; ^ prog.cpp:18:23: error: cannot convert 'main()::Gender' to 'main()::Gender2' in initialization Gender2 gender2 = Female; ^> Aucune variable ne peut avoir un nom qui figure déjà dans une énumération :
RPC
emplacement des pandas
#include> using> namespace> std;> int> main()> {> >// Defining enum1 Gender> >enum> Gender { Male,> >Female };> >// Creating Gender type variable> >Gender gender = Male;> >// creating a variable Male> >// this will throw error> >int> Male = 10;> >cout << gender << endl;> >return> 0;> }> |
>
git ajouter --all
>
Erreur de compilation:
prog.cpp: In function 'int main()': prog.cpp:16:9: error: 'int Male' redeclared as different kind of symbol int Male = 10; ^ prog.cpp:8:19: note: previous declaration 'main()::Gender Male' enum Gender { Male, ^> Les énumérations ne sont pas type sécurisé :
RPC
#include> using> namespace> std;> int> main()> {> >// Defining enum1 Gender> >enum> Gender { Male,> >Female };> >// Defining enum2 Color> >enum> Color { Red,> >Green };> >// Creating Gender type variable> >Gender gender = Male;> >Color color = Red;> >// Upon comparing gender and color> >// it will return true as both have value 0> >// which should not be the case actually> >if> (gender == color)> >cout <<>'Equal'>;> >return> 0;> }> |
comparaison de chaînes java
>
>
Avertissement:
prog.cpp: In function 'int main()': prog.cpp:23:19: warning: comparison between 'enum main()::Gender' and 'enum main()::Color' [-Wenum-compare] if (gender == color) ^>
Classe d'énumération
C++11 a introduit les classes enum (également appelées énumérations ciblées ), cela fait des énumérations à la fois fortement typé et fortement étendu . L'énumération de classe ne permet pas la conversion implicite en int et ne compare pas non plus les énumérateurs de différentes énumérations.
Pour définir la classe enum, nous utilisons le mot-clé class après le mot-clé enum.
Syntaxe:
// Declaration enum class EnumName{ Value1, Value2, ... ValueN}; // Initialisation EnumName ObjectName = EnumName::Value;> Exemple:
// Declaration enum class Color{ Red, Green, Blue}; // Initialisation Color col = Color::Red;> Vous trouverez ci-dessous une implémentation pour afficher la classe Enum
RPC
// C++ program to demonstrate working> // of Enum Classes> #include> using> namespace> std;> int> main()> {> >enum> class> Color { Red,> >Green,> >Blue };> >enum> class> Color2 { Red,> >Black,> >White };> >enum> class> People { Good,> >Bad };> >// An enum value can now be used> >// to create variables> >int> Green = 10;> >// Instantiating the Enum Class> >Color x = Color::Green;> >// Comparison now is completely type-safe> >if> (x == Color::Red)> >cout <<>'It's Red
'>;> >else> >cout <<>'It's not Red
'>;> >People p = People::Good;> >if> (p == People::Bad)> >cout <<>'Bad people
'>;> >else> >cout <<>'Good people
'>;> >// gives an error> >// if(x == p)> >// cout<<'red is equal to good';> >// won't work as there is no> >// implicit conversion to int> >// cout<< x;> >cout <<>int>(x);> >return> 0;> }> |
>
>Sortir
It's not Red Good people 1>
Les types énumérés déclarés dans la classe enum ont également plus de contrôle sur leur type sous-jacent ; il peut s'agir de n'importe quel type de données intégral, tel que char, short ou unsigned int, qui sert essentiellement à déterminer la taille du type.
Ceci est spécifié par deux points et un type sous-jacent suivant le type énuméré :
eg: enum class eyecolor : char {char,green,blue}; Here eyecolor is a distinct type with the same size as a char (1 byte).> C++
#include> using> namespace> std;> enum> rainbow{> >violet,> >indigo,> >blue,> >green,yellow,orange,red> }colors;> enum> class> eyecolor:>char>{> >blue,green,brown> }eye;> int> main() {> >cout<<>'size of enum rainbow variable: '><<>sizeof>(colors)< cout<<'size of enum class eyecolor variable:'< |
méthode de sous-chaîne java
>
>Sortir
size of enum rainbow variable: 4 size of enum class eyecolor variable:1>
Référence: https://en.cppreference.com/w/cpp/langue/enum