Enumとenum class

1322 ワード

c++11に新しい列挙タイプが導入されました---->強制列挙タイプ
// unscoped enum:
enum [identifier] [: type]
{enum-list}; 

// scoped enum:
enum [class|struct] [identifier] [: type] 
{enum-list};

パラメータの説明:
  identifier:
列挙するタイプ名を指定します.
  
type:
列挙器のベースタイプ(デフォルトint)は、すべての列挙器が同じベースタイプを有し、任意の整数である可能性があります.
  
enum-list:
列挙でカンマで区切られた列挙器のリスト.範囲内の各列挙器または変数名は一意でなければなりません.ただし、値は繰り返すことができます.範囲を区別しない列挙では、範囲は周辺範囲である.範囲を区別する列挙では、範囲はenum-list自体である.
  
class:
宣言のこのキーワードを使用して、列挙区分範囲を指定し、identifierを指定する必要があります.このコンテキストでは意味的に等価であるため、classの代わりにstructキーワードを使用することもできます.



enum Test
{
  test1,
  test2
};

int a = test1;  // ,
if (test1 == 0)
  cout << "Hello world.";



enum class ErrorCode
{
  ERROR_ONE,
  ERROR_TWO,
  ERROR_THREE
};

int num = 2;
num = static_cast(ErrorCode::ERROR_ONE); // ,
ErrorCode test = static_cast(12);  // ,
if (test == ErrorCode::ERROR_THREE)
  cout << "It's impossible"

転載先:https://www.cnblogs.com/laogaoyang/p/6075564.html