Aracılığıyla paylaş


Numaralandırmalar (C++/CX)

C++/CX, standart C++ scoped enumile benzer olan anahtar sözcüğünü desteklerpublic enum class. anahtar sözcüğü kullanılarak public enum class bildirilen bir numaralandırıcı kullandığınızda, numaralandırma tanımlayıcısını kullanarak her numaralandırıcı değerinin kapsamını belirlemeniz gerekir.

Açıklamalar

public enum class gibi publicbir erişim tanımlayıcısı olmayan bir, standart C++ kapsamlı sabit listesi olarak değerlendirilir.

Windows Çalışma Zamanı public enum class türün int32 veya bayraklar sabit listesi için uint32 olmasını gerektirse de, bir veya public enum struct bildirimi herhangi bir tamsayı türüne sahip olabilir. Aşağıdaki söz diziminde veya public enum classpublic enum struct'nin bölümleri açıklanmaktadır.

Bu örnekte genel sabit listesi sınıfının nasıl tanımlanacağı gösterilmektedir:

// Define the enum
public enum class TrafficLight : int { Red, Yellow, Green }; 
// ...

Bu sonraki örnekte nasıl kullanılacak gösterilmektedir:

// Consume the enum:
TrafficLight myLight = TrafficLight::Red;
if (myLight == TrafficLight::Green) 
{
    //...
} 

Örnekler

Sonraki örneklerde bir sabit listesi bildirme gösterilmektedir.

// 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);

Sonraki örnekte sayısal eşdeğerlere dönüştürme ve karşılaştırma gerçekleştirme işlemleri gösterilmektedir. Numaralandırıcı One kullanımının kapsamının numaralandırma tanımlayıcısı, numaralandırıcının Enum1First kapsamının ise ile Enum2belirlenmiş olduğuna dikkat edin.

 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) { /*   */ } 

Ayrıca bkz.

Tür Sistemi
C++/CX Dil Başvurusu
Ad Alanları Başvurusu