Modern C++ enumにはスコープが設定できる
職場がC++11/14に対応してきたのですが、今までなんちゃってModern C++だったので復習を兼ねてメモ。
Effective Modern C++ ―C++11/14プログラムを進化させる42項目
- 作者: Scott Meyers,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/09/18
- メディア: 大型本
- この商品を含むブログ (7件) を見る
項目10:enumにはスコープを設ける
enum class Color { black, red, blue}; // C++11からはclassを付けるとスコープを限定できる auto black = false; //OK. C++98であるようにenum ColorだとNGになる //enumの中の値が実質グローバル変数のようになる //過去は対策として、enum Color = {color_black, ....}のようなことをしていた。 if (red < 10.2) //NG. 暗黙の型変換はできない { // } //別ヘッダファイルでは前方宣言可能 enum class Color; //前方宣言可能
まとめ:
・スコープを限定する→列挙子がグローバル変数になるのを避ける
・暗黙の型変換が不可になる
・前方宣言が減らせる→コンパイル時のファイル依存が減る