「ISO C++ では、enum 基底型を指定するときに 'enum' 型への前方参照を禁止しています」質問する

「ISO C++ では、enum 基底型を指定するときに 'enum' 型への前方参照を禁止しています」質問する

プログラムは次のようになります:

enum E : int
{
    A, B, C
};

g++ -c test.cpp正常に動作します。ただし、clang++ -c test.cpp次のエラーが発生します。

test.cpp:1:6: error: ISO C++ forbids forward references to 'enum' types
enum E : int
     ^
test.cpp:1:8: error: expected unqualified-id
enum E : int
       ^
2 errors generated.

これらのエラー メッセージは私には意味がわかりません。ここには前方参照がありません。

ベストアンサー1

列挙型の基になる型を指定するのは、C++11 言語の機能です。コードをコンパイルするには、スイッチを追加する必要があります-std=c++11。これは、GCC と Clang の両方で機能します。

C++03 の列挙型の場合、列挙子の値が int または unsigned int に収まらない場合を除き、基礎となる整数型は実装定義です。(ただし、Microsoft のコンパイラでは、VS 2005 以降、列挙型の基になる型を独自の拡張機能として指定できるようになりました。)

おすすめ記事