[解決済み] c++のenumクラスの要素数を決定することはできますか?
2023-01-02 18:54:27
質問
c++ のカーディナリティを決定することは可能でしょうか?
enum class
:
enum class Example { A, B, C, D, E };
を使おうとしたのですが
sizeof
を使ってみましたが、enum要素の大きさを返してしまいます。
sizeof(Example); // Returns 4 (on my architecture)
基数(私の例では5)を取得する標準的な方法はありますか?
どのように解決するのですか?
直接はできませんが、以下のような仕掛けがあります。
enum class Example { A, B, C, D, E, Count };
次に,カーディナリティは
static_cast<int>(Example::Count)
.
もちろん、これは enum の値を 0 から自動的に割り当てる場合にのみうまく機能します。 そうでない場合は、手動で正しい基数を Count に割り当てることができますが、これはとにかく別の定数を維持しなければならないことと何ら変わりはありません。
enum class Example { A = 1, B = 2, C = 4, D = 8, E = 16, Count = 5 };
デメリットとしては、コンパイラが
Example::Count
をenum値の引数として使うことを許してしまうことです。(個人的には、これは実際には問題ないと思っていますが)。
関連
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み] C++で、あるコンストラクタを別のコンストラクタから呼び出す(コンストラクタ・チェイニングを行う)ことは可能ですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
-
[解決済み] noexceptを本当に使うべきはいつですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】enumを繰り返し処理する方法は?
-
[解決済み】C++のenumクラスはメソッドを持つことができますか?
-
[解決済み】なぜenumクラスはプレーンな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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】C++の余分な資格エラー
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] (enumの項目を数えるには?