通过int值访问枚举成员
accessing enum members by int values
我有
enum Direction { NONE = 0, LEFT, RIGHT, FORWARD };
有一个函数
void displayDirection(int dir)
{ ... }
此功能将具有INT值,并将根据该值打印"方向"的成员。怎么可能?预先感谢。
ex:如果dir = 0打印无;如果dir = 1,请正确打印;等。
ps:我在C 上很新。
您需要它们的"字符串"版本才能打印...例如char* szArray[] = { "NONE", "LEFT", "RIGHT", "FORWARD" };
然后在displayDirection
中通过szArray[dir]
引用它。界限检查也是适当的...
是的,这是可能的,因为enum
值在引擎盖下是积分类型。转换是隐式的,因此您应该能够直接调用
displayDirection(3); //FORWARD
但是,我建议将功能签名更改为
void displayDirection(Direction dir)
如果要打印文本值,"无","左"等,那是不可能的。
在编译后的可执行文件中,名称已被优化,您无法将它们撤回,就像您无法通过名称引用变量(例如示例中的" dir")。
因此,您应该做的是将名称通过将其存储在字符串数组中。
相关文章:
- 枚举成员与静态 int 成员?
- 从类访问枚举成员
- 枚举成员不是类型错误
- std::映射键作为模板化结构与枚举成员
- 设置类的枚举成员无效地使用"枚举"
- 如何访问结构和枚举成员形成一类
- 是否可以在 constexpr 函数中遍历枚举成员,因此值为 constexpr
- 获取 [枚举成员?] 的封闭类型
- 如何使用 SWIG 枚举枚举成员
- 通过int值访问枚举成员
- '='应初始化所有枚举成员或仅初始化第一个枚举成员;
- 为什么可以获取此枚举成员值,而不必先深入研究嵌套枚举
- 将具有枚举成员的非托管结构封送到 C#
- 为类模板的枚举成员定义 std::hash
- 缩短C++枚举成员的路径(使用 typedef 或 typename),以用作模板参数
- C++类枚举成员变量
- 检查是否已定义枚举成员
- 为什么要使用这段代码来获取枚举成员的数量?
- 使用枚举成员模板化成员函数
- 使用咬运算符了解枚举成员的初始化