c++ - 使用来自不同文件的命名空间成员

标签 c++ namespaces scope

在我的项目中,我有一个现有文件:

ABC_Existing.h

    namespace Cpld_A
    {
       const int XXX;
    }

ABC_Existing.cc 使用变量 XXX 执行“使用命名空间 Cpld”。

我创建了一个新文件:

XYZ_New.h

    namespace Cpld_B
    {
       const int XXX;
    }

我正在尝试在 XYZ_New.cc 中使用它。编译时,我收到错误消息,指出 Cpld_A 和 Cpld_B 之间变量 XXX 的声明不明确。 ABC_Existing 和 XYZ_New 之间没有关系。并且 ABC_Existing.h 没有(直接或间接)包含在 XYZ_New.h/cc 中。但是,所有这些文件都在同一个文件夹中并一起构建。

这个问题怎么会发生,我该如何解决? 感谢您的帮助!!!

最佳答案

最有可能的是,歧义是因为相同的 namespace 以及其中的符号名称是通过某种间接的模糊方式导入到您当前的 namespace 中的。

解决歧义的一个简单方法是在引用符号时使用符号的完全限定名称:

Cpld_A::XXX     
Cpld_B::XXX     

关于c++ - 使用来自不同文件的命名空间成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9306349/

相关文章:

c++ - 在命名空间中转发声明类

c++ - 构造函数重载选择 cast operator 而不是 struct type

java - 为什么用 C++ 编写的 BRMS 不如用 Java 编写的 BRMS 有用?

python - 如何使用/从命名空间中获取列表元素?

c# - WPF 命名空间混淆

c++ - 匿名命名空间歧义

c# - 局部变量范围错误 - foreach 循环

ruby - 具有动态条件的 rspec `its` 语法

c++ - 计算相邻矩形的数量

java - C++ OpenGL - 获取对象的世界坐标(碰撞检测需要)