1

我有

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

并且有一个功能

void displayDirection(int dir)
{ ... }

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

例如:如果 dir = 0 打印无;如果 dir = 1,打印 RIGHT;等等

PS:我对 C++ 很陌生。

4

3 回答 3

3

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

于 2012-10-29T14:17:47.570 回答
2

是的,这是可能的,因为enum值在幕后是整数类型。转换是隐式的,所以你应该可以直接调用

displayDirection(3);  //FORWARD 

但是,我建议将函数签名更改为

void displayDirection(Direction dir)
于 2012-10-29T14:14:26.390 回答
0

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

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

所以你应该做的是通过将名称存储在字符串数组中来将它们放入程序中。

于 2012-10-29T14:19:17.550 回答