C++の名前空間 3
C++の名前空間 2 - 檜山正幸のキマイラ飼育記 メモ編の続き
次の2つの用途に限定しよう。
- 名前付きの構成素を大分類する。
- インスタンスを必要としないクラスのように使う。
大分類はトップレベルの名前付き名前空間。名前空間の名前は、英小文字のみ短い名前。
「クラス代わり」とは、関数を入れる器としてだけクラスを使うなら、代わりに名前空間を使う、ということ。命名はやはり英小文字のみ短い名前。
大分類名前空間空間は、すべてのファイルに適用するので、ソースは次の形になる。
// foo_hoge.h // includeなど namespace foo { // ... } // foo
実装側
// foo_hoge.cpp // includeなど #include "foo_hoge.h" namespace foo { // ... } // foo
そのファイル(の中身の名前)がどの名前空間に属するかは、ファイル名接頭辞でわかるようにする。入れ子の名前空間は、クラス代わり(関数の入れ物)なので、ファイル名接頭辞にエンコードする必要はない。