我不确定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