我有一个不属于任何命名空间的类
A级(*)。
我有另一个具有相同名称但属于命名空间
的类class命名空间B的一部分。
在xyz.cpp中,我有以下内容:
#include "..."
using namespace B;
// some code
A::var; // This A should be part of (*) and not namespace B.
// some code
但是由于我的类名冲突,我得到错误。有办法解决这个问题吗?
答案 0 :(得分:1)
using namespace
关键字将指定命名空间中的所有名称导入全局命名空间。由于您已在全局命名空间中声明了class A
,因此会导致冲突。
解决方案:请勿使用using namespace B
。
这实际上就是你正在做的事情:
namespace GLOBAL {
class A { ... };
};
namespace B {
class A { ... };
};
using namespace B /* export 'B::A' into 'GLOBAL' resulting in a conflict; */ ;
答案 1 :(得分:0)
您不能使用
using namespace B;
但请使用
B::A::var
代替。