グローバル変数と同様に、グローバル名前空間を (extern
キーワードを介して) 定義するにはどうすればよいですか? 次のことを試しましたが、うまくいきません。
//header
#ifndef ASD_H
#define ASD_H
namespace Goo
{
int var;
}
#endif
このヘッダー ファイルは.cpp
、名前空間にアクセスする必要があるすべてのファイルに含めます。これは動作しません。これはどのように正しく行われますか?
グローバル変数と同様に、グローバル名前空間を (extern
キーワードを介して) 定義するにはどうすればよいですか? 次のことを試しましたが、うまくいきません。
//header
#ifndef ASD_H
#define ASD_H
namespace Goo
{
int var;
}
#endif
このヘッダー ファイルは.cpp
、名前空間にアクセスする必要があるすべてのファイルに含めます。これは動作しません。これはどのように正しく行われますか?
デフォルトの名前空間はグローバル名前空間です。明示的namespace
にコードを追加しないでください。
そうは言っても、名前空間がどのように機能するかわからないので、これを求めています。彼らの仕事はスコープをクリアすることです。それらはオブジェクトではありません。それらはメモリを指していません。彼らはそのように非常に「柔らかい」です。すべてのファイルで名前空間を宣言でき、そのファイルに表示されるクラス、構造、関数などはその名前空間の一部になります。異なるファイルは、同じ名前空間を共有していることを他の方法で通信する必要はありません。テキストが同じ場合、それは同じ名前空間です。
あなたのコメントへの返信:
namespace One {
intvar1;
}
namespace Two {
int var2;
}
これは、他の翻訳単位で、名前空間になく、またはと入力した場合とまったく同じようにアクセスできますOne::var1
。Two::var2
つまりvar1
、必要に応じvar2
て宣言する責任があります。extern
さらに、または共通のベース名前空間がある場合は使用できnamespace Base::One
ますBase::Two
。