2016-03-24 2 views
0

次のフォワード宣言の例を解決できるようにEclipseを設定する方法はありますか?
これは問題なく構築されます。Eclipse CDTは前方のdelaclarationで意味エラーを起こしますが、エラーなしでコンパイルします

class MyClass { 
public: 
    enum class MyEnum; // Forward declaration. 
    enum class MyOtherEnum { 
    DELTA, 
    ECHO, 
    FOXTROT 
    }; 
}; 

enum class MyClass::MyEnum{ 
    ALPHA, 
    BRAVO, 
    CHARLIE 
}; 

int main(void) { 
    volatile MyClass::MyEnum myVariable = MyClass::MyEnum::BRAVO; // Flags up two semantic errors. 
    volatile MyClass::MyOtherEnum myOtherVariable = MyClass::MyOtherEnum::ECHO; // No problems. 
    return 0; 
} 

セマンティックエラー:
シンボル 'BRAVO' を解決できませんでした。
タイプ 'MyClass :: MyEnum'を解決できませんでした。

Eclipse CDT Mars.2リリース(4.5.2)を使用しています。

+0

Eclipseはあまりにも巧妙になりたいので...それは代わりに、コンパイラは仕事をさせるのコード自体を分析します。したがって、Eclipseで正しいC++レベルを設定する必要があります(C++ 98,11,14、...)。それが十分でない場合は、Eclipseを離れて投げるか、クラス内でMyEnumを完全に定義してください。 –

+0

@SergeBallestaこの情報に感謝します。私はちょうどここに概説されたプロセスを使用してバージョンを設定しようとしました:http://stackoverflow.com/questions/13635079/enable-c11-in-eclipse-cdt-juno-kepler-luna-indexer、残念ながら運はありません。私は彼らが入れ子構造体とクラスで動作するので、彼らは列挙型を見落としたと思います。 –

答えて

0

これは既知のバグで、近日リリース予定のEclipse CDTで修正されています。

Duplicate Bug report

関連する問題