Преобразование значения Enum в целое число в классе Enum и Enum

В чем разница между классами Enum и Enum и как преобразовать значение Enum в целое число в классах Enum и Enum?


person Mohammad reza Kashi    schedule 11.01.2021    source источник
comment
Отвечает ли это на ваш вопрос? Получение целочисленного значения из перечисления   -  person Rolandas Ulevicius    schedule 11.01.2021
comment
@RolandasUlevicius Нет, этот вопрос касается перечислений C#.   -  person Yksisarvinen    schedule 11.01.2021
comment
Нет, мой вопрос о разнице между значением перечисления и значением класса перечисления в С++.   -  person Mohammad reza Kashi    schedule 11.01.2021


Ответы (1)


C++ имеет два вида перечислений:

перечисления классов
Простые перечисления
Вот несколько примеров их объявления:

 enum class Color { red, green, blue }; // enum class
 enum Animal { dog, cat, bird, human }; // plain enum 

Какая разница между двумя?

классы enum - имена перечислителей являются локальными для перечисления, и их значения не преобразуются неявно в другие типы (например, другое перечисление или int)

Обычные перечисления — где имена перечислителей находятся в той же области, что и перечисление, а их значения неявно преобразуются в целые числа и другие типы.

в перечислении:

enum type{x=10,y,z=50,j};

int value = x;

в перечисляемом классе:

enum class type{x=10,y,z=50,j};

int value= static_cast<int>(x);
person Mohammad reza Kashi    schedule 11.01.2021
comment
Второй пример должен быть int value= static_cast<int>(type::x); - person super; 11.01.2021