0
特定のインデックスを参照したいときに、明示的キャストを呼び出さずにstd:arrayインデックスとしてC++ enumクラスを使用します。明示的キャストなしでstd :: array indexとしてC++ enumクラスの列挙子を使用する方法
さらに、固定サイズのstd ::配列にtypedefを使用します。
typedef std::array<int, 3> MyType;
enum class MyEnum {
ENUMERATOR0 = 0,
ENUMERATOR1 = 1,
ENUMERATOR2 = 2,
};
ので、代わりの使用:
MyType my_type = {0};
my_type[static_cast<int>(MyEnum::ENUMERATOR0)] = 42;
私が使用したい:
my_type[MyEnum::ENUMERATOR0] = 42;
をので、私は私がMyType(STDの添字演算子をオーバーロードするために必要とされると仮定::配列)型です。しかし、私は、私のケースでは添え字演算子をどのようにオーバーロードするかを理解できませんでした。簡単にするために、私はtypedefの代わりにクラスを使用しないでください。 どうすればいいですか?
で
置き換えます。#define INDEXを(a)の\t static_castを(a)の –
あなたはなし '列挙MyEnum'、すなわちを使用して気にしない場合は'クラスには、問題はないはずです。 –
'enum class'を使う理由はありますか?ユースケースとは何ですか?どのような問題が解決するはずですか? –