Enumとenum class
1322 ワード
c++11に新しい列挙タイプが導入されました---->強制列挙タイプ
パラメータの説明:
identifier:
列挙するタイプ名を指定します.
type:
列挙器のベースタイプ(デフォルトint)は、すべての列挙器が同じベースタイプを有し、任意の整数である可能性があります.
enum-list:
列挙でカンマで区切られた列挙器のリスト.範囲内の各列挙器または変数名は一意でなければなりません.ただし、値は繰り返すことができます.範囲を区別しない列挙では、範囲は周辺範囲である.範囲を区別する列挙では、範囲はenum-list自体である.
class:
宣言のこのキーワードを使用して、列挙区分範囲を指定し、identifierを指定する必要があります.このコンテキストでは意味的に等価であるため、classの代わりにstructキーワードを使用することもできます.
転載先:https://www.cnblogs.com/laogaoyang/p/6075564.html
// 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