2016-03-24 3 views
0

Gibt es eine Möglichkeit, Eclipse so zu konfigurieren, dass es das folgende Vorwärtsdeklarationsbeispiel auflösen kann?
Dies baut ohne Probleme auf.Eclipse CDT zeigt einen Semantikfehler mit Vorwärts-Deklaration an, kompiliert aber ohne Fehler

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; 
} 

semantische Fehler:
Symbol 'BRAVO' kann nicht aufgelöst werden.
Typ 'MyClass :: MyEnum' konnte nicht aufgelöst werden.

Verwenden von Eclipse CDT Mars.2 Release (4.5.2).

+0

Da Eclipse-zu klug sein will ... Es analysiert den Code selbst, anstatt den Compiler zu lassen, die Arbeit zu erledigen. Sie müssen also sicherstellen, dass Sie die richtige C++ - Ebene in Eclipse (C++ 98, 11, 14, ...) festlegen. Wenn es nicht genug ist, dann werfen Sie Eclipse weg oder definieren Sie MyEnum vollständig innerhalb der Klasse ... –

+0

@SergeBallesta danke für die Information. Ich habe gerade versucht, die Version mit dem hier beschriebenen Prozess einzustellen: http://stackoverflow.com/questions/13635079/enable-c11-in-eclipse-cdt-juno-kepler-luna-indexer, aber leider kein Glück. Ich denke, sie haben Enums übersehen, da es mit verschachtelten Strukturen und Klassen funktioniert. –

Antwort

0

Dies ist ein bekannter Fehler und wird in der kommenden Neon-Version von Eclipse CDT behoben.

Duplicate Bug report

Verwandte Themen