Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การวนลูป Enum ใน C++

Enum (Enumeration) คือ user-defined type ที่กำหนดชื่อให้ค่าคงที่จำนวนเต็ม

Syntax

enum Color { RED, GREEN, BLUE }; // เริ่มจาก 0 เพิ่มทีละ 1
enum Status { OK=1, ERROR=5, PENDING }; // OK=1, ERROR=5, PENDING=6

การ Iterate Enum (C++11 scoped enum แนะนำ)

Enum แบบดั้งเดิม (unscoped) สามารถวนลูปได้เพราะแปลงเป็น int โดยอัตโนมัติ

enum Suit { HEART, DIAMOND, SPADE, CLUB };

for (int i = HEART; i <= CLUB; ++i) {
    cout << "Card: " << i << endl; // 0,1,2,3
}

C++11 Scoped Enum (enum class) - ไม่สามารถวนลูปโดยตรง

enum class Suit { HEART, DIAMOND, SPADE, CLUB };
// for (auto s : {Suit::HEART, ...}) // ต้องระบุค่าทุกตัวด้วยมือ
// หรือใช้ magic_enum library (third-party)

แนะนำใช้ enum class เพื่อ type safety และหลีกเลี่ยง name pollution