Maison > développement back-end > C++ > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-08 20:48:02
original
507 Les gens l'ont consulté

How to Convert Strongly Typed Enums to Integers in C  ?

Conversion implicite des énumérations fortement typées en Int

En C, les énumérations fortement typées sont une fonctionnalité relativement nouvelle qui offre une sécurité améliorée par rapport aux énumérations traditionnelles énumérations. Une différence entre ces types est que les énumérations fortement typées ne peuvent pas être implicitement converties en nombres entiers. Ce comportement est délibéré pour empêcher les conversions involontaires.

Cependant, dans certains scénarios, vous devrez peut-être convertir une valeur d'énumération fortement typée en un nombre entier. Dans ces cas, vous pouvez utiliser l'opérateur static_cast. Cependant, vous devez spécifier explicitement le type entier sous-jacent dans la distribution.

<code class="cpp">enum class b { B1, B2 };

int foo(int input) { return input; }

int main(void) {
  int value = static_cast<int>(b::B2); // Explicit cast required
  std::cout << foo(value) << std::endl;
}
Copier après la connexion

Si vous préférez ne pas spécifier explicitement le type sous-jacent, vous pouvez utiliser une fonction de modèle comme celle-ci :

<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);
}

int main(void) {
  std::cout << foo(to_underlying(b::B2)) << std::endl; // No explicit cast needed
}</code>
Copier après la connexion

En utilisant cette fonction de modèle, vous évitez d'avoir à spécifier le type sous-jacent à chaque fois que vous devez convertir une valeur d'énumération fortement typée en un entier. Il fournit une solution plus concise et réutilisable.

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