C ++提升了如何在枚举中获得一些成员?

时间:2010-10-21 00:58:54

标签: c++ boost

是否有任何内容可以帮助在枚举中获得一些成员?

e.g。为以下代码返回3:


enum SomeEnum
{
  One,
  Two,
  Three
}

3 个答案:

答案 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,扫描逗号,忽略成对的< ;>,(),[]等..