C++ 中枚举的范围

问题描述 投票:0回答:1

我对枚举范围感到困惑。 我有这样的代码:

namespace regs {
enum Control_0 {
    THING1,
    THING2,
    THING3
};
enum Control_1 {
    THING100,
    THING200,
    THING300
};
const auto regs_range = {Control_0, Control_1}; //error
} // regs namespace

并且需要迭代这个枚举,例如基于范围的:

for (const auto& reg : regs::regs_range) {
    get_register_data(reg);
}

我还需要保存枚举值的访问功能,例如

getThingData(Control_0::THING1)

是否可以以某种方式实现这一点?

为了迭代枚举中的值,我一直使用这个:

const auto regs_values_range = {Control_0::THING1, Control_0::THING2, Control_0::THING3};
,但相对于枚举范围,这是错误的。

c++ enums range range-based-loop
1个回答
0
投票

但相对于枚举范围来说这是错误的。

问题是

Control_0
Control_1
types 而不是值,因此
const auto regs_range = {Control_0, Control_1}
无效。

std::tuple<Control_0, Control_1>
可能更适合您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.