我对枚举范围感到困惑。 我有这样的代码:
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};
,但相对于枚举范围,这是错误的。
但相对于枚举范围来说这是错误的。
问题是
Control_0
和 Control_1
是 types 而不是值,因此 const auto regs_range = {Control_0, Control_1}
无效。
std::tuple<Control_0, Control_1>
可能更适合您的问题。