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).
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 ... –
@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. –