Поле класса типа enum class в C++
Поле может иметь тип enum class так же,
как int или std::string: у каждого
объекта хранится одна из констант перечисления.
При создании объекта полю задают начальное значение
или присваивают его позже. Запишем тип Color
и класс Banner:
#include <iostream>
enum class Color { red, green, blue };
class Banner {
public:
Color theme = Color::blue;
};
Создадим объект и выведем метку цвета
через switch:
int main() {
Banner banner;
switch (banner.theme) {
case Color::red:
std::cout << "red\n";
break;
case Color::green:
std::cout << "green\n";
break;
case Color::blue:
std::cout << "blue\n";
break;
}
return 0;
}
Тот же тип подходит для struct. Запишем
структуру заказа со статусом:
#include <iostream>
enum class OrderStatus { new_order, paid, shipped, done };
struct Order {
OrderStatus status = OrderStatus::paid;
};
Создадим объект и выведем метку для paid:
int main() {
Order order;
switch (order.status) {
case OrderStatus::new_order:
std::cout << "created\n";
break;
case OrderStatus::paid:
std::cout << "paid\n";
break;
case OrderStatus::shipped:
std::cout << "on way\n";
break;
case OrderStatus::done:
std::cout << "finished\n";
break;
}
return 0;
}
Объявите enum class Channel с константами
email, sms и push.
Сделайте класс Message с полем Channel
и полем id типа long.
Создайте объект с каналом push и id
7, выведите имя канала и id
в одной строке через пробел.
Объявите enum class Role с константами
guest, user и admin.
Сделайте структуру Account с полем Role.
Создайте объект с ролью admin и выведите
числовой код роли: guest - 0,
user - 1, admin - 2.