"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como converter explicitamente enums fortemente digitados em números inteiros em C++?

Como converter explicitamente enums fortemente digitados em números inteiros em C++?

Publicado em 2024-11-20
Navegar:130

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

Convertendo automaticamente um Enum fortemente tipado em tipo inteiro

Em C , enums fortemente tipados garantem maior segurança de tipo do que enums tradicionais. No entanto, ao contrário dos enums tradicionais, os enums fortemente tipados não podem ser convertidos implicitamente em tipos inteiros.

Para converter um valor enum fortemente tipado E em um tipo inteiro, é necessária uma conversão explícita, como:

int i = static_cast(b::B2);

No entanto, se o tipo subjacente da enum for desconhecido, a seguinte função de modelo pode ser usada:

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

Agora, a conversão pode ser realizada sem especificar explicitamente o tipo subjacente:

std::cout 

É importante observar que essa conversão funciona apenas para valores de enums fortemente digitados. Se um valor enum tradicional for fornecido para to_underlying(), um erro será gerado.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3