Automatizando Enum Fortemente Tipado para Conversão Inteira
Em C , enums vêm em dois sabores: enums fortemente tipados e enums regulares. Enums regulares podem ser convertidos implicitamente em números inteiros, enquanto enums fortemente tipados requerem uma conversão explícita. Isso levanta a questão: existe uma maneira automatizada de converter enums fortemente digitados em números inteiros sem recorrer a conversões explícitas?
A resposta é não e é intencional. Enums fortemente digitados são projetados para evitar a conversão implícita em números inteiros. Essencialmente, o compilador garante que você reconheça explicitamente a conversão de um valor enumerado em um número inteiro.
No entanto, há uma solução alternativa para evitar a especificação do tipo subjacente na conversão. Ao utilizar uma função de modelo, podemos abstrair a especificação do tipo do elenco.
template
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
return static_cast::type>(e);
}
Com esta função de modelo, a conversão pode ser obtida da seguinte forma:
std::cout Essa abordagem elimina a especificação de tipo explícita na conversão, simplificando o processo de conversão enquanto mantém o comportamento desejado de conversão explícita forçada para tipos fortemente digitados enumerações.
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