「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C++ で厳密に型指定された列挙型を整数に明示的に変換する方法は?

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

2024 年 11 月 20 日に公開
ブラウズ:772

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

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

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

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

int i = static_cast(b::B2);

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

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

これで、基になる型を明示的に指定せずに変換を実行できるようになりました。

std::cout 

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3