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.
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