我已经搜索过但找不到此问题的任何解决方案。 我有一个枚举不以“0”开始,其他值也没有先后顺序这就好比,如何在C/C++中获取Enum中的值索引
typedef enum{
a = 8,
b = 100,
c,
d = 1,
e = 9
}numberEnum;
我想获得一个元素的索引在这样的枚举;
int myIndex = getIndex(a); // myIndex = 0
int myIndex1 = getIndex(d); // myIndex1 = 3
int myIndex2 = getIndex(b); // myIndex2 = 1
int getIndex(numberEnum e)
{
// some code here
return index;
}
我不应该在这种情况下使用Array。使用枚举是必须的。有什么办法可以做到这一点? 感谢您的帮助。
有这样做的直接方式。但是这里的目标是什么?你是否希望在编译时使用这些信息? –
这里可以做的不多。你可以维护一个单独的列表索引列表(也许'std :: map',假设C++),或者使用x-macros(或boost预处理器witchery)自动生成这个列表。在没有数组的情况下做这件事很愚蠢,但是你可以用x-macro或类似的东西生成一个'switch'。 –
HolyBlackCat
C或C++?他们不是相同的语言,解决方案会有所不同。 – Barmar