enum : Nicht dem Standard entsprechende Erweiterung
-
Ich habe folgenden Code
PhaseCalcType = enumPhaseCalcType::Fresnel;den ich verwende weil
PhaseCalcType = Fresnel;auf folgende Struktur verweisen würde:
enumSelectedBeam::Fresnelund damit einen Fehler produziert.
die erste Lösung liefert mir die Warnung
warning C4482: Nicht dem Standard entsprechende Erweiterung: Enumeration "enumPhaseCalcType" wird im qualifizierten Namen verwendet.
Wie werde ich die wieder los?
-
Also das Problem hier ist Mehrdeutigkeit. Du verwendest den gleichen Bezeichner in verschiedenen enums. Du hast jetzt 2 Möglichkeiten:
1. Du nennst einen der beiden anders.
2. Du steckst die enums in ein eigenen namespacenamespace phaseCalcType{ enum enumPhaseCalcType{ Fresnel }; } using phaseCalcType::enumPhaseCalcType; // Macht das sichtbar im äußeren Namespace"enumPhaseCalcType::Fresnel" ist nicht im Standard beschrieben und daher warnt der Compiler, wenn ich mich aber richtig erinnere wird das im neuen Standard aber eingeführt. Das nützt momentan aber natürlich nicht wirklich etwas darauf solltest du noch darauf verzichten bis der neue Standard offiziell wird und die Mehrheit der Compiler dies auch unterstützt.
Vinzenz
-
Im neuen Standard sollte mit
enum classeine typsicherere Version der Enums kommen. Dann sind zum Beispiel implizite Konvertierungen zu integralen Typen nicht mehr möglich und der Scope der Enumeratoren muss spezifiziert werden.