自动将强类型枚举转换为整数
在 C 中,枚举有两种类型:强类型枚举和常规枚举。常规枚举可以隐式转换为整数,而强类型枚举需要显式转换。这就提出了一个问题:是否有一种自动方法可以将强类型枚举转换为整数,而无需借助显式强制转换?
答案是否定的,而且这是有意为之。强类型枚举旨在防止隐式转换为整数。本质上,编译器确保您显式确认从枚举值到整数的转换。
但是,有一种解决方法可以避免在强制转换中指定基础类型。通过利用模板函数,我们可以抽象出强制类型转换的类型规范。
template
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
return static_cast::type>(e);
}
通过这个模板函数,可以实现如下转换:
std::cout 此方法消除了强制转换中的显式类型规范,简化了转换过程,同时保持了强类型强制显式转换的所需行为枚举。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3