![](/img/trans.png)
[英]How to implement scoped enum in C++98 and can be used like enum class in C++11?
[英]How to iterate over all elements of an enum in C++98
参考这个问题,我问,在 C++98 中迭代所有枚举值的最佳方法是什么(通常是最不容易出错的方法)?
C++98 的限制:
解决方案中应该避免什么(我很确定,并非所有事情都可以避免):
#define CREATE_ENUM(...)
)没有办法实现你所有的 A..E。 您可以实现:
#define CREATE_ENUM(...)
)。请注意,就当前 C++ 标准中的这些点而言,枚举类和 range-for 循环都不会带来任何可以扩大您选择的东西。
那个时候通常的技巧是这样做:
enum Foo {
One,
Two,
Three,
Last,
MAX_FOO_ENUM
};
for( int it = One; it < MAX_FOO_ENUM; ++it )
...
当然,只有在 Foo 中没有跳过时,它才能正确工作。 除非您定义某种容器,其中的元素等于 Foo 的每个值,否则您无法正确执行此操作,但对于以后的标准也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.