Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
C++/CX mendukung public enum class kata kunci, yang dianalogikan dengan C++ scoped enumstandar. Saat Anda menggunakan enumerator yang dideklarasikan dengan menggunakan public enum class kata kunci, Anda harus menggunakan pengidentifikasi enumerasi untuk mencakup setiap nilai enumerator.
Keterangan
public enum class yang tidak memiliki penentu akses, seperti public, diperlakukan sebagai enum cakupan C++ standar.
public enum class Deklarasi atau public enum struct dapat memiliki jenis yang mendasari jenis integral apa pun meskipun Windows Runtime itu sendiri mengharuskan jenis menjadi int32, atau uint32 untuk enum bendera. Sintaks berikut menjelaskan bagian dari public enum class atau public enum struct.
Contoh ini menunjukkan cara menentukan kelas enum publik:
// Define the enum
public enum class TrafficLight : int { Red, Yellow, Green };
// ...
Contoh berikutnya ini menunjukkan cara menggunakannya:
// Consume the enum:
TrafficLight myLight = TrafficLight::Red;
if (myLight == TrafficLight::Green)
{
//...
}
Contoh
Contoh berikutnya menunjukkan cara mendeklarasikan enum,
// 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);
Contoh berikutnya menunjukkan cara mentransmisikan ke setara numerik, dan melakukan perbandingan. Perhatikan bahwa penggunaan enumerator One dilingkup oleh Enum1 pengidentifikasi enumerasi, dan enumerator First dilingkup oleh 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) { /* */ }