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