«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как явно преобразовать строго типизированные перечисления в целые числа в C++?

Как явно преобразовать строго типизированные перечисления в целые числа в C++?

Опубликовано 20 ноября 2024 г.
Просматривать:540

How to Explicitly Convert Strongly Typed Enums to Integers in C  ?

Автоматическое преобразование строго типизированного перечисления в целочисленный тип

В C строго типизированные перечисления обеспечивают большую безопасность типов, чем традиционные перечисления. Однако, в отличие от традиционных перечислений, строго типизированные перечисления не могут быть неявно преобразованы в целочисленные типы.

Чтобы преобразовать строго типизированное значение перечисления E в целочисленный тип, требуется явное приведение типов, например:

int i = static_cast(b::B2);

Однако, если базовый тип перечисления неизвестен, можно использовать следующую функцию шаблона:

template 
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
    return static_cast::type>(e);
}

Теперь преобразование можно выполнить без явного указания базового типа:

std::cout 

Важно отметить, что это преобразование работает только для значений строго типизированных перечислений. Если в to_underlying() указано традиционное значение перечисления, возникнет ошибка.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3