我无法运行以下代码。由于名称不同,为什么仍然会出现如下所述的错误? 错误:冲突声明'NS2 :: Base B' NS2 :: Base B;
#include<iostream>
using namespace std;
namespace NS1
{
class Base
{
int x=4;
public:
void disp()
{
cout<<x<<endl;
}
};
}
namespace NS2
{
class Base
{
int x=7;
public:
void disp()
{
cout<<x<<endl;
}
};
}
int main()
{
NS1::Base B;
NS1:B.disp();
NS2::Base B;
NS2::B.disp();
}
答案 0 :(得分:3)
命名空间仅包含在其中声明的内容,在您的情况下包含两个类Base
。但是,名为B
的两个对象未在任何名称空间中声明(但都是作用于函数main
),因此会出现冲突的声明错误。在不同名称空间中声明的关联类并不重要。