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)を使用しています。
Eclipseはあまりにも巧妙になりたいので...それは代わりに、コンパイラは仕事をさせるのコード自体を分析します。したがって、Eclipseで正しいC++レベルを設定する必要があります(C++ 98,11,14、...)。それが十分でない場合は、Eclipseを離れて投げるか、クラス内でMyEnumを完全に定義してください。 –
@SergeBallestaこの情報に感謝します。私はちょうどここに概説されたプロセスを使用してバージョンを設定しようとしました:http://stackoverflow.com/questions/13635079/enable-c11-in-eclipse-cdt-juno-kepler-luna-indexer、残念ながら運はありません。私は彼らが入れ子構造体とクラスで動作するので、彼らは列挙型を見落としたと思います。 –