Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A C++/CX támogatja a public enum class kulcsszót, amely a standard C++ scoped enumfüggvényhez hasonló. Ha a kulcsszóval public enum class deklarált enumerátort használ, az enumerálási azonosítót kell használnia az egyes enumerátorok értékeinek hatóköréhez.
Megjegyzések
A public enum class nem hozzáférés-meghatározóval (például public) nem rendelkező a standard C++ hatókörű számként lesz kezelve.
A public enum class vagy public enum struct deklaráció bármilyen integráltípussal rendelkezhet, bár maga a Windows futtatókörnyezet megköveteli, hogy a típus int32, vagy uint32 legyen egy jelző enumerálásához. Az alábbi szintaxis egy vagy public enum structtöbb részből álló részeket public enum class ír le.
Ez a példa bemutatja, hogyan definiálhat nyilvános enumerálási osztályt:
// Define the enum
public enum class TrafficLight : int { Red, Yellow, Green };
// ...
Ez a következő példa bemutatja, hogyan használható fel:
// Consume the enum:
TrafficLight myLight = TrafficLight::Red;
if (myLight == TrafficLight::Green)
{
//...
}
Példák
A következő példák bemutatják, hogyan deklarálhat számokat,
// 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);
A következő példa bemutatja, hogyan lehet numerikus megfelelőkre leadni és összehasonlításokat végezni. Figyelje meg, hogy az enumerátor One használatát az Enum1 enumerálási azonosító hatóköre határozza meg, az enumerátor First hatóköre pedig a .Enum2
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) { /* */ }
Lásd még
Típus rendszer
C++/CX nyelvi referencia
Névterek – referencia