Scoped enums
C++ 11 引入了所謂的作用域列舉。這些是列舉,其成員必須使用 enumname::membername
進行限定。使用 enum class
語法宣告範圍內的列舉。例如,將顏色儲存在彩虹中:
enum class rainbow {
RED,
ORANGE,
YELLOW,
GREEN,
BLUE,
INDIGO,
VIOLET
};
要訪問特定顏色:
rainbow r = rainbow::INDIGO;
如果沒有強制轉換,enum class
es 不能隱式轉換為 int
s。所以 int x = rainbow::RED
無效。
Scoped 列舉還允許你指定基礎型別,這是用於表示成員的型別。預設情況下是 int
。在 Tic-Tac-Toe 遊戲中,你可以將該作品儲存為
enum class piece : char {
EMPTY = '\0',
X = 'X',
O = 'O',
};
正如你可能注意到的,enum
s 在最後一個成員之後可以有一個尾隨逗號。