我有
enum Direction { NONE = 0, LEFT, RIGHT, FORWARD };
并且有一个功能
void displayDirection(int dir)
{ ... }
此函数将采用int值,并将根据该值打印“Direction”的成员。怎么可能?提前谢谢。
例如:如果dir = 0则打印NONE;如果dir = 1,则打印正确;等
PS:我在c ++上很新。
答案 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”)。
所以你应该做的是将名字存放到你的程序中,将它们存储在一个字符串数组中。