Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
C++/CX unterstützt das public enum class Schlüsselwort, das analog zu einem C++ scoped enum-Standard ist. Wenn Sie einen Enumerator verwenden, der durch das Schlüsselwort public enum class deklariert ist, müssen Sie den Enumerationsbezeichner dazu benutzen, den Umfang jedes Enumeratorwerts festzulegen.
Hinweise
Eine public enum class , die keinen Zugriffsspezifizierer hat, z. B. public, wird als standardmäßige Enumeration mit C++-Bereichseinschränkungbehandelt.
Eine public enum class oder public enum struct Deklaration kann einen zugrunde liegenden Typ eines beliebigen integralen Typs aufweisen, obwohl die Windows-Runtime selbst erfordert, dass der Typ int32 oder uint32 für eine Flags-Enumeration ist. Die folgende Syntax beschreibt die Teile eines oder public enum classmehrerer public enum struct .
Dieses Beispiel zeigt, wie eine öffentliche Enumerationsklasse definiert wird:
// Define the enum
public enum class TrafficLight : int { Red, Yellow, Green };
// ...
In diesem folgenden Beispiel wird zeigt, wie sie verwendet wird:
// Consume the enum:
TrafficLight myLight = TrafficLight::Red;
if (myLight == TrafficLight::Green)
{
//...
}
Beispiele
In den folgenden Beispielen wird veranschaulicht, wie eine Enumeration deklariert wird.
// Underlying type is int32
public enum class Enum1
{
Zero,
One,
Two,
Three
};
public enum class Enum2
{
None = 0,
First, // First == 1
Some = 5,
Many = 10
};
// Underlying type is unsigned int
// for Flags. Must be explicitly specified
using namespace Platform::Metadata;
[Flags]
public enum class BitField : unsigned int
{
Mask0 = 0x0,
Mask2 = 0x2,
Mask4 = 0x4,
Mask8 = 0x8
};
Enum1 e1 = Enum1::One;
int v1 = static_cast<int>(e1);
int v2 = static_cast<int>(Enum2::First);
Im nächsten Beispiel wird gezeigt, wie Sie eine Enumeration in numerische Werte umwandeln und Vergleiche durchführen. Beachten Sie, dass die Verwendung des Enumerators One vom Enumerationsbezeichner Enum1 beschränkt wird, und der Enumerator First wird durch Enum2beschränkt.
if (e1 == Enum1::One) { /* ... */ }
//if (e1 == Enum2::First) { /* ... */ } // yields compile error C3063
static_assert(sizeof(Enum1) == 4, "sizeof(Enum1) should be 4");
BitField x = BitField::Mask0 | BitField::Mask2 | BitField::Mask4;
if ((x & BitField::Mask2) == BitField::Mask2) { /* */ }
Siehe auch
Typsystem
C++-/CX-Programmiersprachenreferenz
Referenz zu Namespaces