using ディレクティブ (C++ のみ)
using ディレクティブは、すべての名前空間修飾子およびスコー プ演算子へのアクセスを可能にします。 これは、using キーワードを名前空間 ID に適用することによって行われます。
name は、前に定義された名前空間でなければなりません。 using ディレクティブは、グローバルおよびローカルのスコープで適用できますが、 クラス・スコープでは適用できません。 ローカル・スコープは、例外を使用して類似の宣言を隠蔽することによって、グローバル・スコープに優先します。
非修飾名参照では、スコープが、2 番目の名前空間を指名する using ディレクティブを含み、さらにその 2 番目の名前空間が別の using ディレクティブを含む場合、2 番目の名前空間の using ディレクティブは、1 番目のスコープ内にあるかのように動作します。
namespace A {
int i;
}
namespace B {
int i;
using namespace A;
}
void f()
{
using namespace B;
i = 7; // error
}
この例で、関数 f() 内で i を初期化しようとすると、
コンパイル時エラーを生じます。なぜなら、関数 f() は、どの i
を呼び出すのか、つまり名前空間 A から i を呼び出すのか、
または名前空間 B から i を呼び出すのか、
を知らないからです。