除默认值外的枚举类比较

时间:2018-12-15 13:05:45

标签: c++ class enums

我有以下枚举类:

enum class MyEnum : int32_t
{
    ENUM1 = EXTERNAL_CONSTANT1,
    ENUM2 = EXTERNAL_CONSTANT2,
    ENUM3 = EXTERNAL_CONSTANT3
};

“ EXTERNAL_CONSTANTX”是其他地方提供的常量(或多或少是特殊的代码编号)。

我想做的是可以选择按优先级比较枚举,这在另一个文档中已指定,例如ENUM3的优先级最高,ENUM2的优先级最低(它与EXTERNAL_CONSTANT的值完全不相关) 。据我检查,C ++不允许获取特定枚举的索引,因此我可以按照应采用其优先级的方式对其进行排序。我的方法是使用枚举向量,其中所有的向量都具有特定的优先级顺序,但我认为这不是最佳的可扩展方法。

是否有更好的方法解决我描述的问题?预先感谢

1 个答案:

答案 0 :(得分:0)

是的,当您为每个枚举项明确赋予一个值(而不是前一个+1)时,声明枚举项所遵循的顺序无关紧要,该顺序会丢失,并且如果需要,您必须自己进行管理。

我的方法是使用枚举向量,其中所有的枚举都具有特定的优先级顺序。如果我很了解比较两个枚举项的优先级,则必须通过该向量并且找到的第一个枚举项的优先级较低(或更高,具体取决于您放置它们的顺序)?这很昂贵。

您最多使用EXTERNAL_CONSTANTi或枚举项ENUMi?我的意思是也许您可以按照优先级顺序来定义ENUMi,并有办法从EXTERNAL_VALUEi获取ENUMi并在需要时进行反转?