我无法运行以下代码。由于命名空间不同,为什么仍然显示如下所述的错误? 错误:冲突声明“NS2::Base B” NS2::基地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();
}
最佳答案
命名空间只包含其中声明的内容,在您的例子中是两个类 Base
。然而,这两个名为 B
的对象并未在任何命名空间中声明(但都限定在函数 main
范围内),因此您会遇到声明冲突错误。在不同命名空间中声明的关联类并不重要。
关于C++ : namespace conflicting declaration error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46821474/