通过int值访问枚举成员

时间:2012-10-29 14:12:29

标签: c++ enums

我有

enum Direction { NONE = 0, LEFT, RIGHT, FORWARD };

并且有一个功能

void displayDirection(int dir)
{ ... }

此函数将采用int值,并将根据该值打印“Direction”的成员。怎么可能?提前谢谢。

例如:如果dir = 0则打印NONE;如果dir = 1,则打印正确;等

PS:我在c ++上很新。

3 个答案:

答案 0 :(得分:3)

你需要打印它们的“字符串”版本......例如char* szArray[] = { "NONE", "LEFT", "RIGHT", "FORWARD" };然后在displayDirection中通过szArray[dir]引用它。边界检查也是合适的......

答案 1 :(得分:2)

是的,这是可能的,因为enum值是整体类型。转换是隐式的,因此您应该可以直接调用

displayDirection(3);  //FORWARD 

但是,我建议将功能签名更改为

void displayDirection(Direction dir)

答案 2 :(得分:0)

如果要打印文本值,“NONE”,“LEFT”等,这是不可能的。

在已编译的可执行文件中,名称已被优化掉,您无法将其取回,就像您无法按名称引用变量一样(如示例中的“dir”)。

所以你应该做的是将名字存放到你的程序中,将它们存储在一个字符串数组中。