有没有办法在C++中找到枚举的基数(大小)?

rof*_*kel 6 c++ size enums

可以编写一个返回枚举中元素数量的函数吗?例如,假设我已定义:

enum E {x, y, z};
Run Code Online (Sandbox Code Playgroud)

然后f(E)将返回3.

Kor*_*icz 18

不.

如果有,你不会看到这样的代码:

enum E {
  VALUE_BLAH,
  VALUE_OTHERBLAH,
  ...
  VALUE_FINALBLAH,
  VALUE_COUNT
}
Run Code Online (Sandbox Code Playgroud)

请注意,此代码也是(讨厌的)解决方案的提示 - 如果添加最终的"guard"元素,并且没有明确说明枚举字段的值,那么最后一个"COUNT"元素将具有该值你正在寻找 - 这是因为枚举数从零开始:

enum  B {
  ONE,   // has value = 0
  TWO,   // has value = 1
  THREE, // has value = 2
  COUNT  // has value = 3 - cardinality of enum without COUNT
}
Run Code Online (Sandbox Code Playgroud)