2011-12-18 17 views
6

私はいくつかのクラスからなるcpp全体で(const)変数を使用できるようにする必要があります。私は、問題を解決するために名前空間を使用することに決めましたが、次のことについてはわかりません:C++の名前空間と静的変数

  • 私はこの変数を静的として定義する必要がありますか?
  • 名前のない名前空間を使用する場合にのみ、変数を静的にすることを避けることはできますか?
+0

クラス/機能の外で宣言してみましたか? (static ofcなし) – neeKo

+2

静的にしないようにしたい理由はありますか? – tpg2114

+1

'const'の場合、暗黙的にも静的です。静的でないようにするには 'extern const'を使う必要があります。 –

答えて

6
  1. あなたはは、静的、または匿名の名前空間のように変数を定義するは必要ありません。しかし、このオブジェクトをファイルの外で使用していない場合は、ネームスペースの汚染を減らし、リンクをスピードアップする(リンカによって考慮される必要があるシンボルの数を減らす)ことをお勧めします。
  2. 変数を匿名名前空間に宣言すると、静的に効果的になります。実際に静的にする必要はありません(ただし、好きな場合でも可能です)。匿名の名前空間の利点は、型(クラス、構造体、列挙型、型定義)だけでなく静的な変数や関数も定義できることです。
+0

ありがとう、それは非常に明確でした。 –