Maison > développement back-end > C++ > 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 ?

Linda Hamilton
Libérer: 2024-11-04 12:55:02
original
649 Les gens l'ont consulté

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 :

<code class="cpp">int i = static_cast<int>(b::B2);</code>
Copier après la connexion

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

<code class="cpp">template <typename E>
constexpr typename std::underlying_type<E>::type to_underlying(E e) noexcept {
    return static_cast<typename std::underlying_type<E>::type>(e);
}</code>
Copier après la connexion

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

<code class="cpp">std::cout << foo(to_underlying(b::B2)) << std::endl;</code>
Copier après la connexion

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal