C++:命名空间冲突声明错误
问题描述:
我无法运行以下代码。由于命名空间不同,为什么仍然显示如下所述的错误? 错误:冲突声明'NS2 :: Base B' NS2 :: Base B;C++:命名空间冲突声明错误
#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();
}
您正在创建名为'B'的变量。这与命名空间无关。 – Knoep
@Knoep,好的,但对象B是用不同的命名空间创建的吗? – Bahubali
不,'B'是'main()'中的局部变量。它不在名称空间中。做'NS1 :: B'不正确 – vu1p3n0x