"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 > Enums fortemente digitados podem ser convertidos automaticamente em números inteiros em C++?

Enums fortemente digitados podem ser convertidos automaticamente em números inteiros em C++?

Publicado em 2024-11-16
Navegar:609

Can Strongly Typed Enums Be Automatically Converted to Integers in C  ?

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.

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