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