C++ 11のenumクラスをどのようにループする必要がありますか?私はまだENDの最後のenum値を追加する必要はないと思っていますが、範囲ベースのループを使うことができませんでした。C++ 11ではenumクラスをどのようにループする必要がありますか?
答えて
実際にenumクラスをループする必要があり、特殊なENDシンボルを追加したくない場合は、この目的のために独自の特性を定義できます。
template<typename E> struct EnumTraits;
enum class E { V1, V2, V3 };
enum class F { X1, X2, X3 };
template<> struct EnumTraits<E> { static constexpr E LAST = E::V3; };
template<> struct EnumTraits<F> { static constexpr F LAST = F::X3; };
その後、例えば書くことができます。
EnumTraits<E>::LAST
あなたはまだ、このクラスで算術演算を定義する必要があります。もちろん、E. の「最終」の値を取得します。
もちろん、これはenumが0から始まり、中間値をスキップしないことを前提としています。 –
@KevinBallard:...多くの、多くの状況でそうなることはまずありません。 –
@EdS:列挙型の目的に依存します。 –
あなたは、このようなプロセッサのハックを行うことができます。
#define E_INITIALIZER_LIST { E1, E2, E3, E4 }
enum E E_INITIALIZER_LIST;
constexpr E ALL_VALUES_OF_E[] E_INITIALIZER_LIST;
マクロから中括弧を省略すると、リストの柔軟性が少し向上します。また、 'SENTINEL_VALUE'を追加したり、リストをラウンドカッコに入れたりすることもできます。 – Potatoswatter
- 1. C#Enumは3進でキャストする必要がありますか?
- 2. C#:どのようにToString()を実装する必要がありますか?
- 3. このデータをJava enumにどのように保存する必要がありますか?
- 4. Enumクラスのファイル名の後に 'Enum'を付ける必要がありますか?
- 5. C#例外なくループする必要がありますか?
- 6. フレックスボックスはIE 11でオーバーフローする必要があります
- 7. JComboBoxでEnumまたはStringを使用する必要がありますか?
- 8. Android NDK:エラー:-std = C++ 11または-std = gnu ++ 11コンパイラオプションで有効にする必要があります
- 9. このような状況では、どのクラス名をジェネリックに挿入する必要がありますか?
- 10. すべてのAndroid SDKが必要ですか、どのようにインストールする必要がありますか?
- 11. これはAS3ループでどのように記述する必要がありますか?
- 12. 例外を有効にする必要があるC++ 11標準ライブラリインターフェイスの一覧はありますか?
- 13. 参照をC++でクラスに格納する必要がありますか?
- 14. は、どのように私は否定クラスのAUCを取得する必要がありますか?
- 15. PHP:openofficeでメールをどのようにマージする必要がありますか?
- 16. オントロジー - どのように言うと、クラスのインスタンスは、 "何か"持っている必要がありますか?
- 17. マルチプロトコルプロトコルのドキュメントストリングはどのようにフォーマットする必要がありますか?
- 18. node.jsのJSファイルパスはどのようにする必要がありますか?
- 19. Android:ダイアログの幅はどのようにする必要がありますか?
- 20. 最近のC++ではどのように例外を使用する必要がありますか?
- 21. Enumクラスは-std = C++でのみ利用可能です。11
- 22. クロージャはどのようにフォーマットする必要がありますか?
- 23. コールバックはどのようにPHPDocする必要がありますか?
- 24. webpackはどのように動作する必要がありますか?
- 25. これはどのようにテストする必要がありますか?
- 26. アクティビティスタックはどのように管理する必要がありますか?
- 27. パッケージとはどのように動作する必要がありますか?
- 28. IODEnhUSImageModuleはどのように利用する必要がありますか?
- 29. Zend_Validator_StringLengthはどのように拡張する必要がありますか?
- 30. web.configはどのように展開する必要がありますか?
'enum'がコンテナではありません - それは意味がありません。それ以上の「ループ」、私見に。いずれにしても、使用できるコードの例については、[here](こちら)(https://bitbucket.org/martinhofernandes/wheels/src/c8e1b8979492/include/wheels/enums.h%2B%2B)を参照してください。 – Xeo