"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment convertir explicitement des énumérations fortement typées en entiers en C++ ?

Comment convertir explicitement des énumérations fortement typées en entiers en C++ ?

Publié le 2024-11-20
Parcourir:209

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

Conversion automatique d'une énumération fortement typée en type entier

En C , les énumérations fortement typées garantissent une plus grande sécurité de type que les énumérations traditionnelles. Cependant, contrairement aux énumérations traditionnelles, les énumérations fortement typées ne peuvent pas être implicitement converties en types entiers.

Pour convertir une valeur d'énumération fortement typée E en un type entier, une conversion explicite est requise, telle que :

int i = static_cast(b::B2);

Cependant, si le type sous-jacent de l'énumération est inconnu, la fonction de modèle suivante peut être utilisée :

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

Maintenant, la conversion peut être effectuée sans spécifier explicitement le type sous-jacent :

std::cout 

Il est important de noter que cette conversion ne fonctionne que pour les valeurs d'énumérations fortement typées. Si une valeur d'énumération traditionnelle est fournie à to_underlying(), une erreur sera générée.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3