What is the difference between the Enum and Enum Class and how to converting Enum value to the integer in "Enum" and "Enum Class"?
Asked
Active
Viewed 4,068 times
3
-
1Does this answer your question? [Getting the integer value from enum](https://stackoverflow.com/questions/1963993/getting-the-integer-value-from-enum) – Rolandas Ulevicius Jan 11 '21 at 11:25
-
1@RolandasUlevicius No, that question is about C# enums. – Yksisarvinen Jan 11 '21 at 11:29
-
1No, my question is about difference between enum value and enum class value in c++. – Mohammad reza Kashi Jan 11 '21 at 11:29
2 Answers
3
C++ has two kinds of enum:
enum classes
Plain enums
Here are a couple of examples on how to declare them:
enum class Color { red, green, blue }; // enum class
enum Animal { dog, cat, bird, human }; // plain enum
What is the difference between the two?
enum classes - enumerator names are local to the enum and their values do not implicitly convert to other types (like another enum or int)
Plain enums - where enumerator names are in the same scope as the enum and their values implicitly convert to integers and other types
in the Enum:
enum type{x=10,y,z=50,j};
int value = x;
in the Enum Class:
enum class type{x=10,y,z=50,j};
int value= static_cast<int>(x);

super
- 12,335
- 2
- 19
- 29

Mohammad reza Kashi
- 321
- 1
- 5
- 17
0
As of C++23 there's a library function, std::to_underlying
, for converting enum class values to their underlying value.
int main ()
{
enum class Foo {a, b, c, d, e, f};
return std::to_underlying(Foo::f); // returns 5
}

Elliott
- 2,603
- 2
- 18
- 35