Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
C++/CX podporuje public enum class klíčové slovo, které je podobné standardnímu jazyku C++ scoped enum. Při použití enumerátoru, který je deklarován pomocí klíčového public enum class slova, je nutné použít identifikátor výčtu k určení rozsahu každé hodnoty výčtu.
Poznámky
Specifikátor public enum class přístupu, jako publicje například , se považuje za standardní výčt c++ s oborem.
A public enum class nebo public enum struct deklarace může mít základní typ jakéhokoli celočíselného typu, i když prostředí Windows Runtime sám vyžaduje, aby typ byl int32 nebo uint32 pro výčty příznaků. Následující syntaxe popisuje části nebo public enum classpublic enum struct.
Tento příklad ukazuje, jak definovat veřejnou třídu výčtu:
// Define the enum
public enum class TrafficLight : int { Red, Yellow, Green };
// ...
Tento další příklad ukazuje, jak ho používat:
// Consume the enum:
TrafficLight myLight = TrafficLight::Red;
if (myLight == TrafficLight::Green)
{
//...
}
Příklady
Další příklady ukazují, jak deklarovat výčt,
// 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);
Další příklad ukazuje, jak přetypovat na číselné ekvivalenty a provádět porovnání. Všimněte si, že použití enumerátoru One je vymezeno identifikátorem Enum1 výčtu a enumerátor First je vymezen .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) { /* */ }
Viz také
Systém typů
Referenční zdroje k jazyku C++/CX
Referenční informace o oborech názvů