« Ruby on Rails 2.1.1でActiveRecordのvalidation機能が変更されている | メイン | nested classからは親のprivate空間にアクセスできるか。 »

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;

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

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/818

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年09月27日 14:12に投稿されたエントリーのページです。

ひとつ前の投稿は「Ruby on Rails 2.1.1でActiveRecordのvalidation機能が変更されている」です。

次の投稿は「nested classからは親のprivate空間にアクセスできるか。」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35