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