C++ TR1 強い型付けの列挙型

C++ TR1の新しいenumの構文では、enumの後にclassがつけられるようになり、型も指定できるようになりました。

enum class 列挙型名 : 型 {
  …,
}

enum class days : char {
  Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
}

classも型も指定しない場合は、従来のC++と同じ動作になります。
型を指定しない場合は、intになります。

//従来と同じ書き方もできる。
enum months {
  January, February, March, April, May, June,
  July, August, September, October, November, December
}

classを指定した場合は、明示的にスコープを指定する必要があります。

days day = days::Sunday; //エラー
days day = Sunday; //エラー

classを指定しない場合は、スコープを指定する必要はありません。

months month = January;

前方宣言も可能になりました。

enum days : char;

前方宣言ができるようになったことと、明示的なスコープ指定を強制できるようになったことがメリットかな。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です