問題タブ [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.
c++ - C++11 列挙型クラスのインスタンス化
次の形式の enum クラス変数のインスタンス化に遭遇しましたが、VS2012 で警告やエラーなしでコンパイルしています。
X(id)
さらに、コンパイル済みの X 型 param を期待する関数に引数として送信します。結果が常に正しいのか、それともコンパイラの奇妙な動作なのかはわかりません。
ただし、上記の代わりに実行しようとするX myX(id);
と、コンパイル エラーが発生しました。
エラー C2440: '初期化中': 'UINT32' から 'X' に変換できません。列挙型への変換には、明示的なキャスト (static_cast、C スタイルのキャスト、または関数スタイルのキャスト) が必要です。
C++11 標準を読んでも、理解するのに役立ちませんでした。だから私はこの件に関して2つの質問があります:
- 整数型をパラメーターとして列挙型クラス オブジェクトを構築することは可能ですか?
- 1 が true の場合、なぜ
X myX(id)
機能しないのですか?
enum-class - 列挙型で句読点を定義するにはどうすればよいですか?
私はスタンフォード POStagger を使用しており、列挙型を次のように定義したいと考えています。
句読点を列挙変数として定義するにはどうすればよいですか?
c++ - 拡張列挙型クラス
私は列挙型クラスを持っていた、と言う
ここで、パラメータに依存するメンバーを追加したいと思いますvar3(int)
。OK、列挙型ではないので、通常のクラスで変更したいのですが、私の目標は、古いコード(Enum::var1
タイプの値としてEnum
)をコンパイルできるようにすることです。
私はそれをこのようにしようとしました(一時的に忘れvar3
ましょう、それは静的関数になります):
ただし、列挙型の型が不完全なため、コンパイルされません。
ヘッダーにあるため、クラスの後で宣言できません。複数のCPPでは機能しません。その上、ここにパブリックコンストラクターを置くのは良い考えではありません。
何かご意見は?
c++ - 列挙型クラスとは何ですか? なぜ気にする必要があるのですか?
C++11 で 1 行も書いたことがなく、現時点では C++11 でプログラミングする機会がない人のために、短いパラグラフで教えてください。
「列挙型クラス」とは何ですか? なぜ必要なのですか?
c++ - クラス メンバーと constexpr リンク時の最適化を含む C++11 列挙型
私のプロジェクトには、列挙メンバーに関連付けられた追加の属性と、列挙型に関連付けられた補助静的メソッドが必要な列挙がたくさんあります。
私の知る限り、これは標準の列挙型クラス MyItem {...} では実現できないため、プロジェクトの列挙型クラスごとに、これらの補助静的メソッドをカプセル化し、補助インスタンスのインスタンス化も行う補助クラス MyItemEnum を用意しています。そのため、追加の属性を取得するためにそれらのメソッドにアクセスできます。
以下に例を示します (可能な限り単純化されていますが、説明するすべての機能はそこにとどまっていると思います)。
MyItem.h
意味は明らかで、ここで .cpp 部分を提供する必要はないと思います... MyItem をインターフェイスで渡される引数として使用し、拡張機能にアクセスする必要がある場合は MyItemEnum を使用します。
私の最初の質問は、上記のアプローチは大丈夫ですか、それともまったく別のものを検討する必要がありますか?
私の 2 番目の質問は、constexpr を使用して実行しようとしているこの列挙の最適化に関するものです。
それはコンパイルされますが、どうやら constexpr を使用する機会がないようです。
そのため、コンパイラは Item1 がどの値でインスタンス化されたかを知りません。 リンク時の最適化中に上記の式が constexpr として評価される可能性はありますか? あるいは、私は使用することができます
これにより、constexpr コンパイル時の最適化がアクティブになりますが、場合によっては、constexpr をコンパイル時に評価できない場合、コンパイラは MyItemEnum のローカル インスタンスを作成する必要があります(単一のグローバルへの参照を使用する代わりに)。静的インスタンス) これがパフォーマンスの低下につながるのではないかと心配しています (私の実際の列挙型には単一のメンバーよりも多くの属性があるため、ローカルのインスタンス化に時間がかかることがありますか?)。これは正当な懸念ですか?
c++ - 列挙を定義した後の値の割り当て
私はC++、特にC ++ 11の初心者なので、これを使用する必要があるため、「enum」と「enumclass」に関するいくつかの質問が出てきました。
列挙が宣言された後に値を割り当てることはできますか?
数値に値を割り当てることはできますか?(例:ミエナム:: 0 = 2)
構造体またはクラスを基になる型として使用する場合、列挙型クラスはどのように機能しますか?
列挙型のエントリは、構造体/クラスの有効なインスタンスになりますか?
トピックを検索したときに、次のリンクが見つかりました。
ご覧のとおり、いくつか質問があります。
c++ - C++11、enum クラス、g++ での未定義参照、clang++ で動作
私は新しい C++11 の「列挙型クラス」型を使用しましたが、g++ を使用すると「未定義の参照」の問題が発生しました。この問題は、clang++ では発生しません。私が何か間違ったことをしているのか、それとも g++ のバグなのかわかりません。
問題を再現するコードは次のとおりです: (4 つのファイル: enum.hpp、enum.cpp、main.cpp、および Makefile)
と...
と...
そしてメイクファイル...
g++ を使用していると、次のようになります。
しかし、clang++ ではすべて問題ありません (コンパイル エラーはありません)。
私はここで迷っているので、どんな説明でも大歓迎です。
ありがとう!:)
私の設定について:
c++ - 範囲ベースのforループの誤解?
次のコードをコンパイルしようとすると、コンパイラエラーが発生します。
BinaryInstructions
この列挙型クラスは次のとおりです。
enumクラス内のアイテムを使用してforループに基づいて範囲を「実行」することを許可する必要がありますか?または、forループに基づく範囲が配列の内容を検索するためのものであり、列挙型クラスのようなものではないということを微妙に誤解したことがありますか?
私も試しました:インスタンスの作成とインスタンス内の検索:
でも葉巻はありません...よろしくお願いします
c++ - 列挙型クラス「unsigned int に変換できませんでした」
次のような列挙型クラスがあります。
そして、次のような switch ステートメントで列挙型のメンバーを使用しようとしています。
(unsigned int)
基になる型が既に であるのに、なぜ へのキャストが必要なのunsigned int
ですか?