[解決済み] enumと強い型付けenumの比較
2023-07-05 07:29:11
質問
私はC++プログラミングの初心者です。
今日、私は新しいトピックに出会いました。
enum
. 私はそれを少し調査しましたが、今のところ、なぜこれが必要なのか、同じものの用途は何なのか、見つけることができません。
たとえば、私たちが持っている場合。
enum xyz{a, b, c};
/*a = 0, b = 1, c = 2, (Typical C format)*/
なぜ、書く必要があるのか。
enum class xyz{a, b, c};
ここで何をしようとしているのか? 私の最も重要な疑問は、それをどのように使用するかです。 小さな例を示していただければ、理解できると思います。
どのように解決するのですか?
OK、最初の例: 旧式の列挙型は独自のスコープを持ちません。
enum Animals {Bear, Cat, Chicken};
enum Birds {Eagle, Duck, Chicken}; // error! Chicken has already been declared!
enum class Fruits { Apple, Pear, Orange };
enum class Colours { Blue, White, Orange }; // no problem!
第二に、これらは暗黙のうちに積分型に変換されるため、おかしな挙動になる可能性があります。
bool b = Bear && Duck; // what?
最後に、C++11 の列挙型の基礎となる積分型を指定することができます。
enum class Foo : char { A, B, C};
以前は、基礎となる型が指定されていなかったため、プラットフォーム間で互換性の問題が発生する可能性がありました。 編集 コメントで指摘されていますが、C++11 では "古いスタイルの enum の基礎となる積分型を指定することもできます。
関連
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] Pythonで'Enum'を表現するにはどうしたらいいですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)