我不確定B類中的兩個數據成員聲明是否相同。C++標準默認命名空間
//file0.h
namespace C
{
typedef int Id;
}
//file1.h
namespace A
{
typedef int Id;
}
//file2.h
namespace A
{
class B
{
public:
// ...
//Want to add data member theId as:
//Id theId;
//or
//A::Id theId;
}
}
即,在不存在A ::的,有C++標準使用在像這樣的情況下,默認名稱空間?例如,它可能默認爲名稱空間A,因爲該類正在其中聲明。
如果使用Id theId,它將使用哪個名稱空間,A還是C?
編輯1:註釋掉代碼以避免混淆。 編輯2:添加另一個「theId」與不同的命名空間來更好地說明問題。
[合格名稱查找](http://en.cppreference.com/w/cpp/language/qualified_lookup)與[不合格名稱查找](HTTP://en.cppreference .COM/W/CPP /語言/ unqualified_lookup)。 – Jarod42
代碼是否可以編譯? – Bernard
所以在你的情況下它是相同的。 – Jarod42