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的解决方案要干净得多。