C++ 对基于范围的for循环的误解?

C++ 对基于范围的for循环的误解?,c++,for-loop,enum-class,C++,For Loop,Enum Class,尝试编译以下代码时发生编译器错误: for(binary_instructions_t &inst: BinaryInstructions){ } BinaryInstructions是此枚举类: typedef unsigned int binary_instructions_t; enum class BinaryInstructions : binary_instructions_t { END_OF_LAST_INSTR = 0x0, RESET,

尝试编译以下代码时发生编译器错误:

for(binary_instructions_t &inst: BinaryInstructions){


}
BinaryInstructions
是此枚举类:

typedef unsigned int binary_instructions_t;

enum class BinaryInstructions : binary_instructions_t
{
    END_OF_LAST_INSTR = 0x0,

    RESET,
    SETSTEP,
    START,
    STOP,

    ADD,
    REMOVE,
};
是否应该允许我使用枚举类中的项“执行”基于范围的for循环?或者我有没有微妙地误解,基于范围的for循环用于搜索数组的内容,而不是枚举类之类的东西

我也尝试过:创建实例并在实例中搜索:

BinaryInstructions bsInstance;
for(binary_instructions_t &inst : bsInstance){


}

但是没有雪茄。。。提前感谢,

基于范围的for循环需要一个集合,如数组或向量。枚举类不是集合


但是,它是C++,所以有一个解决办法。请参阅:

基于范围的for循环是一种在元素列表上轻松迭代的机制。“元素列表”可以是普通数组,也可以是实现返回迭代器类型的
begin
end
方法的类的实例

例如:

int arr[] = { 1, 2, 3, 4 };
for (int cur : arr)
   std::cout << cur << std::endl;
intarr[]={1,2,3,4};
for(内部电流:arr)

真甜蜜!我喜欢这种实现方式。比我使用的铸造到int的解决方案要干净得多。