在我的项目中,我有一个现有文件:
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/