Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpEnFd 99 of 150 menu
◀ ▶

Поле класса типа 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.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить