我無法運行以下代碼。由於命名空間不同,爲什麼仍然顯示如下所述的錯誤? 錯誤:衝突聲明'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