Объявление enum class
Объявление enum class создает
строго типизированное перечисление.
В отличие от обычного enum, элементы
такого перечисления принадлежат области
видимости самого перечисления и не
преобразуются неявно в целые числа.
После ключевого слова enum class
указывается имя типа перечисления, затем
в фигурных скобках через запятую перечисляются
его элементы. При необходимости после имени
типа через двоеточие можно указать
целочисленный базовый тип.
Синтаксис
enum class Name
{
Value1,
Value2,
Value3
};
С указанием базового типа:
enum class Name : type
{
Value1,
Value2,
Value3
};
Пример
Объявим перечисление Color с тремя
элементами и выведем значение одного из них,
явно преобразовав его в целое число:
#include <iostream>
using namespace std;
enum class Color
{
Red,
Green,
Blue
};
int main()
{
Color col = Color::Green;
if (col == Color::Green) {
cout << "green" << endl;
}
cout << static_cast<int>(col) << endl;
return 0;
}
Результат выполнения кода:
"green"
1
Пример
Объявим перечисление с базовым типом
char и выведем его элементы,
преобразовав их в символы:
#include <iostream>
using namespace std;
enum class Letter : char
{
A = 'a',
B = 'b',
C = 'c'
};
int main()
{
cout << static_cast<char>(Letter::A) << endl;
cout << static_cast<char>(Letter::B) << endl;
cout << static_cast<char>(Letter::C) << endl;
return 0;
}
Результат выполнения кода:
"'a'"
"'b'"
"'c'"