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#:どのようにToString()を実装する必要がありますか?
- 2. C#例外なくループする必要がありますか?
- 3. このデータをJava enumにどのように保存する必要がありますか?
- 4. Enumクラスのファイル名の後に 'Enum'を付ける必要がありますか?
- 5. Android NDK:エラー:-std = C++ 11または-std = gnu ++ 11コンパイラオプションで有効にする必要があります
- 6. これはAS3ループでどのように記述する必要がありますか?
- 7. 例外を有効にする必要があるC++ 11標準ライブラリインターフェイスの一覧はありますか?
- 8. PHP:openofficeでメールをどのようにマージする必要がありますか?
- 9. Enumクラスは-std = C++でのみ利用可能です。11
- 10. マルチプロトコルプロトコルのドキュメントストリングはどのようにフォーマットする必要がありますか?
- 11. Android:ダイアログの幅はどのようにする必要がありますか?
- 12. std :: sortはC++でラムダ関数で動作する必要がありますか?0x/C++ 11?
- 13. 最近のC++ではどのように例外を使用する必要がありますか?
- 14. web.configはどのように展開する必要がありますか?
- 15. Zend_Validator_StringLengthはどのように拡張する必要がありますか?
- 16. コールバックはどのようにPHPDocする必要がありますか?
- 17. IODEnhUSImageModuleはどのように利用する必要がありますか?
- 18. クロージャはどのようにフォーマットする必要がありますか?
- 19. webpackはどのように動作する必要がありますか?
- 20. クラス内にクラスが存在するかどうかを確認する必要はありません/
- 21. jqGrid PostDataをどのように使用する必要がありますか?
- 22. Backbone.jsでクラスの継承をどのように構造化する必要がありますか?
- 23. C++をどのようにしてC++モジュールの準備をする必要がありますか?
- 24. アダプタパターンアダプタにはどのようなクラス名を使用する必要がありますか?
- 25. は、どのように私は(または私は必要があります)
- 26. WCF:クライアントとサーバーで契約クラスをどのように維持する必要がありますか?
- 27. テキストボックスのイベントにどのようにバインドする必要がありますか?
- 28. なぜクラスをC++でエクスポートする必要がありますか?
- 29. どのようにドメインオブジェクトメソッドを消費する必要がありますか?
- 30. 物理シミュレーションをどのようにプログラムする必要がありますか?
'enum'がコンテナではありません - それは意味がありません。それ以上の「ループ」、私見に。いずれにしても、使用できるコードの例については、[here](こちら)(https://bitbucket.org/martinhofernandes/wheels/src/c8e1b8979492/include/wheels/enums.h%2B%2B)を参照してください。 – Xeo