如何轻松地将枚举成员转换为整型?我知道enum class
不可能有成员函数。但是没有任何方法可以做像myEnum::foo.toInt()
这样的事情吗?我正在寻找static_cast<int>(myEnum::foo)
的替代方案,因为每次我需要将其放入int
变量时都要这样做,这是很多类型,我不想使用旧的enum
(非enum class
),因为我想要类型安全,每个枚举都有自己的范围。
考虑使用将任何枚举值强制转换为其底层类型的实用函数:
template<typename Enum>
typename std::underlying_type<Enum>::type to_underlying(Enum e) {
return static_cast<typename std::underlying_type<Enum>::type>(e);
}
你可以这样写:
to_underlying(Enum::foo);