gpt4 book ai didi

c++ - 非顺序整数 C++ 枚举的最佳方法是什么

转载 作者:太空狗 更新时间:2023-10-29 20:38:48 28 4
gpt4 key购买 nike

C++ enum pattern 之后我已经在这里描述过,我试图做类似的事情,但这次我想要使用的值序列不包含连续整数。

代码明显错误:

class Rotations
{
enum PossibleIndexes
{
ZERO,
PLUS180,
PLUS90,
MINUS90
};


enum PossibleValues
{
ZERO= 0,
PLUS180= 180,
PLUS90= 90,
MINUS90= -90
};

static int Count() { return MINUS90 + 1; }

static PossibleValues Default(){ return ZERO; }
};

因为两个枚举的固有元素之间会存在冲突。

所以我的问题是:实现固定数量的硬编码旋转 {0, 180, 90, -90} 的最佳方法是什么,它还具有默认和计数功能?

最佳答案

您始终可以保留一个包含所有可能值的静态 std::initializer_list

namespace PossibleValues
{
enum Type
{
ZERO= 0,
PLUS180= 180,
PLUS90= 90,
MINUS90= -90
};

constexpr auto Values = {ZERO, PLUS180, PLUS90, MINUS90};
size_t Count() { return Values.size(); }
Type Default() { return *begin(Values); }
}

这种方法的额外好处是能够在 for 循环中迭代枚举的值

注意:我希望编译器可以生成所有代码,至少对于枚举类是这样

关于c++ - 非顺序整数 C++ 枚举的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30482218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com