c++ - 命名空间中的类名冲突

标签 c++ namespaces

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

A 类(*)。

我还有另一个同名但属于命名空间的类

命名空间 B 的类 A 的一部分。

在 xyz.cpp 中,我有以下内容:

#include "..."

using namespace B;
// some code
A::var; // This A should be part of (*) and not namespace B.
// some code

但是因为我有冲突的类名,所以我得到了错误。有办法解决这个问题吗?

最佳答案

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; */ ;

关于c++ - 命名空间中的类名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19995505/

相关文章:

c++ - 当需要稍后再次实例化相同类型时,模板函数的过程是什么

c++ - Linux VMware 11 guest 台面驱动程序安装以更新 OpenGL

c++ - 多条路径的最短和

php - 命名空间在框架中真的那么有用吗?

docker - 为什么有人会为两个 docker 容器使用相同的网络命名空间?

linux - 不同 Linux 命名空间中的共享库使用

c++ - ppl,如何正确使用它?

php 自动加载 : what namespace does the class come from?

.net - Noobie WPF 命名空间和转换器问题

C++通过引用将对象传递给函数,它的构造函数被调用