繁体   English   中英

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

[英]Misunderstanding of range-based for loop?

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

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,
};

我应该被允许使用枚举类中的项目来“循环”基于循环吗? 或者我在该范围内巧妙地误解了基于循环是用于搜索数组的内容而不是像枚举类这样的东西?

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

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


}

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

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

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

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

例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM