如何在 C 中将 int 转换为枚举?

新手上路,请多包涵

如何将 int 转换为 C++ 中的枚举?

例如:

 enum Test
{
    A, B
};

int a = 1;

如何将 a 转换为类型 Test::A

原文由 user1509260 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

顺便提一下,如果 enum 的底层类型恰好是固定的,从 C++17 开始,可以简单地写

enum Test : int {A, B};
int a = 1;
Test val{a};

当然, Test val{1}; 也是有效的。

相关的 cppreference 部分内容如下(强调我的):

如果满足以下所有条件,则可以使用列表初始化从不进行强制转换的整数初始化枚举:

  • 初始化是直接列表初始化
  • 初始化列表只有一个元素
  • 枚举是作用域的或非作用域 的,基础类型是固定的
  • 转换是非缩小的

原文由 Axel Krypton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏