我知道我使用指令的範圍僅限於一個塊或一個函數。那麼它將僅適用於該範圍。但是,如果該塊是namespace
它通過相同的命名空間的所有塊顯式應用。那是對的嗎?至少,下面的例子說明:(http://ideone.com/K8dk7E)在另一個命名空間中使用命名空間的範圍
namespace N1
{
struct Foo{};
}
namespace N2
{
using namespace N1;
Foo f;
}
namespace N2
{
Foo f2;
}
int main()
{
N2::f2;
}
我曾預計Foo f2
給一個錯誤,因爲Foo
應該是未知的。 所以我真正的問題是,在命名空間塊中的using
語句對同一命名空間的所有塊有效嗎?
當所有cpp文件都包含在一起並編譯在一起時,會造成問題,因爲它會污染其他cpp文件,而這些文件不應包含其他命名空間(使用using指令的那個命名空間)。所以,實際上它可能會導致不希望的衝突。
您是否問N1成員是否會在N2的擴展名稱空間定義中可見? – SingerOfTheFall
我覺得你提供的例子並沒有很好地說明你的問題。通過SUC,後期編寫的代碼就很好。 – StoryTeller
您確定這不僅僅是包含單個文件的順序問題嗎? – StoryTeller