#include <iostream>
struct a {
enum LOCAL_A { A1, A2 };
};
enum class b { B1, B2 };
int foo(int input) { return input; }
int main(void) {
std::cout << foo(a::A1) << std::endl;
std::cout << foo(static_cast<int>(b::B2)) << std::endl;
}
a::LOCAL_A
是强类型枚举试图实现的,但有一点区别:普通枚举可以转换为整数类型,而强类型枚举不能没有类型转换。
那么,有没有一种方法可以将强类型枚举值转换为整数类型而无需强制转换?如果是,怎么做?
最佳答案
正如其他人所说,您不能进行隐式转换,这是设计使然。
如果您愿意,您可以避免在强制转换中指定基础类型。
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);
}
std::cout << foo(to_underlying(b::B2)) << std::endl;
关于c++ - 如何自动将强类型枚举转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8357240/