通过int值访问枚举成员

accessing enum members by int values

本文关键字:枚举成员 访问 int 通过      更新时间:2023-10-16

我有

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")。

因此,您应该做的是将名称通过将其存储在字符串数组中。