問題タブ [enum-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
14 に答える
80097 参照

c++ - c++列挙型クラスの要素数を決定することは可能ですか?

c++ のカーディナリティを判断することは可能ですかenum class:

を使用しようとしましたsizeofが、列挙型要素のサイズを返します。

カーディナリティ (私の例では 5) を取得する標準的な方法はありますか?

0 投票する
4 に答える
15934 参照

c++ - enum クラスをネストできますか?

これはできますか?

そうでない場合、代替ソリューションはありますか?

この質問の目的: 次のようなことができるようになりたい/必要があります:

強く型付けされた機能を使用したい。

0 投票する
1 に答える
1316 参照

c++ - C ++ 11での静的インポート(列挙型クラスなど)

列挙型クラスの私の使用法(VS2012):

そして別のフラグメントで私は使用します

名前が長いと、これは非常に厄介になります。

私が書くことができるように、どういうわけか列挙値をインポートすることは可能ですか?

ネストされたクラスについても同じです-それらをインポートできますか?

0 投票する
3 に答える
84396 参照

c++ - enum クラスの演算子の実装

問題の「enum クラス」のインクリメントとデクリメント</a>の議論に続いて、型の算術演算子の実装の可能性についてお聞きしたいと思いenum classます。

元の質問の例:

既に定義された演算子を持つ型にキャストせずに算術演算子を実装する方法はありますか? 思いつきませんが、キャストが気になります。通常、キャストは何か問題があることを示しており、キャストを使用するには十分な理由が必要です。特定の型を強制することなく、演算子の実装を実現できる言語を期待しています。

2018 年 12 月更新: C++17 に向けた論文の 1 つは、enum クラス変数と基になる型の間の変換を許可することで、少なくとも部分的にこれに対処しているようです: http://www.open-std.org/jtc1/sc22/wg21/ docs/papers/2016/p0138r2.pdf

0 投票する
1 に答える
2342 参照

c++ - 列挙型と列挙型クラスの違いは?

最近、C++/CLI マネージ コードの作業を開始しましたが、常に次のように列挙型を定義してきました。

今日まで、エラーメッセージが表示されたとき:

メッセージとさまざまな Stack Overflow の質問で提案されているように、コードを次のように変更します。

すぐに問題を修正しました。

ただし、列挙型を定義するために現在知っている2つの異なる方法の違いにはまだ気づいていません。誰かが私のために明確にするのを助けることができますか? また、「列挙型クラス」がマネージド コードにより適している理由は何ですか?

前もって感謝します、

0 投票する
2 に答える
198 参照

c++ - コンパイル時の列挙子のシーケンス

C++11 列挙型クラスが与えられた場合、コンパイル時にすべての列挙子のセットを反復処理するテンプレートまたはその他の構成要素はありますか? たとえば、その列挙型のすべての可能な値で配列を初期化するテンプレートを定義できますか?

0 投票する
1 に答える
6522 参照

c++ - std::bitset で enum クラスを使用する

まず第一に、ビットベースの列挙ではなく通常の列挙が必要です。異なる列挙の量が整数型を超えるためです。また、C++11 の型安全性も利用したいと考えていますenum class。そうするためには、自然な選択は になりますがstd::bitset、これら 2 つを結び付ける方法がわかりません。

カスタムbitsetが必要でしょうか?そのようなクラスの実装を回避するにはどうすればよいですか?

0 投票する
2 に答える
4334 参照

c++ - 参照または値による Enum クラス C++11

基本的に2つの質問がありますが、それらは関連している可能性があるため、1つにまとめます。

関数に渡すときに、C++ 11 で列挙型クラスを参照または値で渡す必要があります。プリミティブ型を継承するようなものですが、渡されるのはオブジェクト全体ですか? 列挙型クラスはタイプ セーフであるためです。

関数 sig があるとしましょう

私の他の質問はここにあります -

0 投票する
3 に答える
38397 参照

c++ - ユーザー定義の C++11 列挙型クラス デフォルト コンストラクター

のデフォルトのコンストラクタを指定する方法はありますenum classか?

を使用してenum class、ライブラリ内の特定のデータ型に許容される一連の値を指定しています。この場合、これは Raspberry Pi の GPIO ピン ID 番号です。次のようになります。

enum class PinID : int {N4 = 4, N17 = 17, /* ...etc... */ }

たとえば、単に an を使用する代わりにこれを行うポイントは、intコードが安全であることを確認することです: 私はできるstatic_assert(またはそうでなければコンパイル時に保証する - 使用される実際のメソッドは私にとって重要ではない) 誰かがしていないようなことスペルミス (4 の代わりに 5 を渡すなど) があり、型の不一致などの自動エラーメッセージが表示されます。

問題enum classは、デフォルトのコンストラクターがあり、C との互換性のために(動作が同じであるため)、と同等のものにenum初期化されることです。この場合、値はありません。これは、ユーザーが次のような宣言/定義を行うことを意味します。enum class00

PinID pid = PinID();

明示的に定義されていない列挙子を取得しており (コードを見ても「存在」していないように見えます)、実行時エラーが発生する可能性があります。これはまた、明示的に定義された列挙子の値に対する ing のような手法は、エラー/デフォルトのケースがなければ不可能であることを意味します。これswitchは、私が避けたいことですthrowboost::optional分析。

デフォルトのコンストラクターを無駄に定義しようとしました。私は (必死に) の名前を共有する関数を定義しようとしましたenum classが、これは (驚くべきことではありませんが) 奇妙なコンパイラ エラーを引き起こしました。すべての列挙子をそれぞれの にマッピングして、 enum classtoをキャストする機能を保持したいので、N4 = 0 のように単に「定義」することは受け入れられません。これは単純さと正気のためです。intN##

私の質問は 2 つあると思いenum classます。そうでない場合、他にどのような可能性を好むでしょうか? 私が欲しいのは次のようなものです:

  1. デフォルトで構築可能です
  2. デフォルト構成を任意の有効な値にすることができます
  3. enum classesによって提供される「指定された有限集合」の値を提供します
  4. 少なくとも同じくらい型安全ですenum class
  5. (できれば) ランタイム ポリモーフィズムを含まない

デフォルトの構成可能性が必要な理由は、値boost::lexical_cast間の変換に伴う構文上のオーバーヘッドと、オペレーティング システム (この場合は sysfs) に出力するenum class実際の関連付けられたs を削減するために使用する予定があるためです。デフォルトの構築可能性が必要です。stringboost::lexical_cast

私の推論の誤りは大歓迎です --enum classこの場合、es が間違った仕事のための正しいオブジェクトであると疑い始めています。質問されれば、明確化が提供されます。お時間をいただきありがとうございます。