c++ - 我怎样才能轻松地将枚举成员转换为 int?

标签 c++ c++11 enums

如何轻松地将枚举成员转换为 int?我知道一个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);

关于c++ - 我怎样才能轻松地将枚举成员转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22692323/

相关文章:

c# - 使用本地化枚举作为数据源

entity-framework - 将 ADO.net Entity Framework 4 与枚举一起使用?我该怎么做?

c++ - 是否可以实现 std::move-and-clear 函数?

c++ - libtool link - 便利库的全局状态初始化

c++ - IOCP WSARecv 总是返回错误 10022

c++ - 在 C++ 中对普通整数使用原子操作

c++ - 为什么在 C++ 中使用 tinyXML2 会得到 NULL 指针?

c++ - 比特集比 bool 数组快吗?

c++ - 通过指向在另一个线程上执行的函数的指针传递堆栈分配的对象

c# - JsonConvert 属性似乎被跳过。为什么?