scoped enum | Programming Place Plus 用語集

トップページ用語集

名称 🔗

解説 🔗

C++ の機能の1つで、スコープを持つ列挙型です。

列挙型はC言語にも存在しており、C++ でもその仕様を受け継いだものが使用できましたが、C言語の列挙型にはスコープの概念がなく、列挙子と同名の識別子が他に存在すると名前が衝突する問題がありました。scoped enum はこの問題を解決するために C++11 で導入されました。なお、従来の列挙型は unscoped enum とも呼ばれるようになっています。

scoped enum は、enumキーワードに加えて、classキーワードあるいは structキーワードを使って定義します(どちらを使っても同じです)。

enum class BloodType {
    A,
    B,
    AB,
    O
};

scoped enum の列挙子を用いる際には、列挙型の名前(列挙名)と、スコープ解決演算子(::)を組み合わせて記述しなければなりません。

BloodType blood_type = BloodType::AB;

のチェックも厳密になっており、存在する列挙子以外のを与えると、コンパイルエラーとして検出されます。

BloodType_tag blood_type = 345;  // コンパイルエラー

C++ の列挙型についての詳細は、新C++編「列挙型」を参照してください。

参考リンク 🔗

更新履歴 🔗


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る