C++でenumを拡張する?
2023-08-24 12:57:18
質問
C++で列挙型を拡張/"継承"する方法はありますか?
I.E:
enum Enum {A,B,C};
enum EnumEx : public Enum {D,E,F};
あるいは、少なくともそれらの間の変換を定義するか?
どのように解決するのですか?
いいえ、ありません。
enum
は、C++では本当にかわいそうなことで、もちろんそれは残念なことです。
でさえも
class enum
でさえ、この拡張性の問題に対処していません (少なくとも型安全性のためにいくつかのことを行ってはいますが)。
の唯一の利点は
enum
は存在しないことです。コンパイラによって直接置換されるため、実行時のオーバーヘッドは発生しませんが、ある程度の型安全性は提供されます。
もしあなたがそのような獣を望むなら、あなた自身が働かなければならないでしょう。
-
クラスを作成する
MyEnum
を含む、(基本的に)int 型の - 興味深い値のそれぞれについて、名前付きコンストラクタを作成します。
これで、クラスを自由に拡張(名前付きコンストラクタの追加)できるようになりました...
それは回避策ですが、私は列挙を扱う飽くなき方法を見つけたことがありません...。
関連
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】Java:サブクラス下のenumでswitchステートメントを使用する
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】コーディング規約 - 列挙型の命名法
-
[解決済み] [RubyでEnumを実装するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】'cout'は型名ではない
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】デバッグアサーションに失敗しました