5

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

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 循环的范围是用于搜索数组的内容而不是枚举类之类的东西?

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

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


}

但没有雪茄......提前谢谢,

4

2 回答 2

8

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

但是,它是 C++,所以有一个解决方法。请参阅:使用枚举类允许基于范围的 For?

于 2013-02-19T18:57:43.920 回答
0

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

例子:

int arr[] = { 1, 2, 3, 4 };
for (int cur : arr)
   std::cout << cur << std::endl;
于 2013-02-19T19:01:48.613 回答