是否有任何内容可以帮助在枚举中获得一些成员?
e.g。为以下代码返回3:
enum SomeEnum
{
One,
Two,
Three
}
答案 0 :(得分:6)
你所要求的并不完全明显,但假设你有一个类似的枚举:
enum Fruits
{
Apples,
Bananas,
Pineapples,
Oranges,
};
您可以像这样修改它:
enum Fruits
{
Apples = 0,
Bananas,
Pineapples,
Oranges,
NUM_FRUITS; // must be last, and no other fruits can be given values.
};
Apples = 0,
并非严格必要,它可能只是Apples,
,因为默认情况下这是结果,但这是一个好主意,因为它清楚地表明你实际上是关心需要什么价值。
因此,Fruits::NUM_FRUITS
等于4.如果你添加了两个水果,小心将它们放在上面 NUM_FRUITS
,并确保提到的第一个水果是隐式或显式设置为零,然后NUM_FRUITS
将为6。
答案 1 :(得分:2)
我用
enum SomeEnum
{
FIRST = 1,
One = 1,
Two = 2,
Three = 3,
LAST = 3
}
答案 2 :(得分:0)
不,创建枚举后没有通用的自动解决方案。如果您准备强制人们通过宏声明他们的枚举,并且您的编译器支持可变参数宏,您可以创建一个创建枚举的宏并捕获元素的数量(stringify,扫描逗号,忽略成对的< ;>,(),[]等..