名称空间中的类名冲突

时间:2013-11-15 07:14:52

标签: c++ namespaces

我有一个不属于任何命名空间的类

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

但是由于我的类名冲突,我得到错误。有办法解决这个问题吗?

2 个答案:

答案 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 

代替。