在C++中,迭代枚举值的首选简单方法是什么?我在之前的SO问题中发现了涉及创建自定义operator++
等内容的问题,但这似乎有些过度。到目前为止,我想出的最好方法是:
enum {
FOO,
BAR,
BLECH,
NUM_ENUMS
} MyEnum;
//for (MyEnum m = FOO; m < NUM_ENUMS; ++m) // compile error
// ...
//for (MyEnum m = FOO; m < NUM_ENUMS; m = m + 1) // compile error
// ...
for (MyEnum m = FOO; m < NUM_ENUMS; m = MyEnum(m + 1)) // OK ?
...
从编码风格的角度来看,这是否合理,并且是否可能会生成警告(g++ -Wall ...
看起来对此很满意)?