在我的项目中,我有几个类似的枚举声明;
enum Comparison
{
LT, // "<"
GT, // ">"
EQ, // "=="
LTEQ, // "<="
GTEQ, // ">="
NEQ // "!="
};
enum Arithmetic
{
ADD, // "+"
SUB, // "-"
MUL, // "*"
DIV, // "/"
MOD, // "%"
};
而且我想将其中几个组合成一个组合枚举,这样;
- 所有元素(来自子枚举)都存在于组合枚举中。
- 所有元素都有一个唯一的值(显然)。
- 所有元素在组合枚举和原始枚举中具有一致的值。
像这样:
enum Comparison
{
LT, // "<"
GT, // ">"
EQ, // "=="
LTEQ, // "<="
GTEQ, // ">="
NEQ // "!="
ADD, // "+"
SUB, // "-"
MUL, // "*"
DIV, // "/"
MOD, // "%"
};
另外,我希望能够做的是将组合枚举“转换”为原始枚举之一,仅给定组合枚举中的值(假设值是一致的,这应该是微不足道的)。
枚举的替代方案是基于类的解决方案,其中类实现operator int()
运算符。
笔记; 我确实相信这operator int()
是要走的路。