ホームページ  >  記事  >  バックエンド開発  >  C で厳密に型指定された列挙型を整数に明示的に変換する方法

C で厳密に型指定された列挙型を整数に明示的に変換する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 12:55:02579ブラウズ

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

厳密に型指定された列挙型を整数型に自動的に変換する

C では、厳密に型指定された列挙型は従来の列挙型よりも高い型安全性を確保します。ただし、従来の列挙型とは異なり、厳密に型指定された列挙型を整数型に暗黙的に変換することはできません。

厳密に型指定された列挙値 E を整数型に変換するには、次のような明示的なキャストが必要です。

<code class="cpp">int i = static_cast<int>(b::B2);</code>

ただし、列挙型の基礎となる型が不明な場合は、次のテンプレート関数を使用できます:

<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>

今後は、基礎となる型を明示的に指定せずに変換を実行できます:

<code class="cpp">std::cout << foo(to_underlying(b::B2)) << std::endl;</code>

この変換は、厳密に型指定された列挙型の値に対してのみ機能することに注意することが重要です。従来の列挙値が to_underlying() に提供された場合、エラーが発生します。

以上がC で厳密に型指定された列挙型を整数に明示的に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。