私のプロジェクトでは、これに似た enum 宣言がいくつかあります。
enum Comparison
{
LT, // "<"
GT, // ">"
EQ, // "=="
LTEQ, // "<="
GTEQ, // ">="
NEQ // "!="
};
enum Arithmetic
{
ADD, // "+"
SUB, // "-"
MUL, // "*"
DIV, // "/"
MOD, // "%"
};
そして、これらのいくつかを組み合わせて、1 つの組み合わせた列挙型にしたいと思います。
- (サブ列挙からの) すべての要素は、結合された列挙に存在します。
- すべての要素には一意の値があります (当然のことです)。
- すべての要素は、結合された列挙型と元の列挙型で一貫した値を持ちます。
このような:
enum Comparison
{
LT, // "<"
GT, // ">"
EQ, // "=="
LTEQ, // "<="
GTEQ, // ">="
NEQ // "!="
ADD, // "+"
SUB, // "-"
MUL, // "*"
DIV, // "/"
MOD, // "%"
};
また、私ができるようにしたいのは、結合された列挙型のみの値を指定して、結合された列挙型を元の列挙型の 1 つに「キャスト」することです (値が一貫していると仮定すると、簡単なはずです)。
operator int()
列挙型の代替は、クラスが演算子を実装するクラスベースのソリューションです。
ノート; 私はそれoperator int()
がどういうわけか進むべき道だと信じています。