Oracle® Solaris Studio 12.4: C++ ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

4.6 enum 名のスコープ修飾子としての使用

enum 宣言ではスコープを指定できないため、enum 名をスコープ修飾子として使用することはできません。たとえば、次のコードは不正です。

enum E {e1, e2, e3};
int i = E::e1; // invalid: E is not a scope name

この不正なコードをコンパイルするには、-features=extensions オプションを使用します。enum 型の名前の場合に、-features=extensions オプションはコンパイラにスコープ修飾子を無視するよう命令します。

このコードを有効なものにするには、不正な修飾子 E:: を取り除きます。


注 -  このオプションを使用すると、プログラムのタイプミスが検出されずにコンパイルされる可能性が高くなります。

注 -  C++11 では、「クラス enum」宣言を実行し、独自のスコープを持つ enum 型を作成できます。