Forward-Deklaration von Enums (C++0x)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu C++0x-Features - Index

Appmethod C++ 2009 führt die Forward-Deklaration von Aufzählungen ein. Sie können eine Aufzählung ohne eine Liste mit Enumeratoren deklarieren. Solche Deklarationen würden keine Definitionen sein und können nur für Aufzählungen mit festen zugrunde liegenden Typen bereitgestellt werden. Eine Aufzählung kann dann neu deklariert werden und evtl. die fehlende Enumeratorenliste bereitstellen, aber die Neudeklaration muss mit der vorherigen Deklaration übereinstimmen. Dieses C++0x-Feature wurde zu Appmethod C++ 2009 hinzugefügt.


enum E : short;           // OK: ohne Gültigkeitsbereich, zugrunde liegender Typ ist short
enum F:                   // ungültig: Enum-Basis erforderlich
enum class G : short      // OK: mit Gültigkeitsbereich, zugrunde liegender Typ ist short
enum class H;             // OK: mit Gültigkeitsbereich, zugrunde liegender Typ ist int
enum E : short;           // OK: Neudeklaration von E
enum class G : short;     // OK: Neudeklaration von G
enum class H;             // OK: Neudeklaration von H
enum class H : int;       // OK: Neudeklaration von H
enum class E : short;     // ungültig: wurde zuvor ohne Gültigkeitsbereich deklariert
enum G : short;           // ungültig: wurde zuvor mit Gültigkeitsbereich deklariert
enum E;                   // ungültig: Enum-Basis erforderlich
enum E : int              // ungültig: abweichender zugrunde liegender Typ
enum class G;             // ungültig: abweichender zugrunde liegender Typ
enum class H : short;     // ungültig: abweichender zugrunde liegender Typ
enum class H {/* */}]     // OK:  diese Neudeklaration ist eine Definition

Siehe auch