3

What is the difference between the Enum and Enum Class and how to converting Enum value to the integer in "Enum" and "Enum Class"?

Mohammad reza Kashi
  • 321
  • 1
  • 5
  • 17

2 Answers2

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
}

https://godbolt.org/z/PE35eq78j

https://en.cppreference.com/w/cpp/utility/to_underlying

Elliott
  • 2,603
  • 2
  • 18
  • 35