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

时间:2012-02-16 06:05:07

标签: c++ namespaces scope

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

ABC_Existing.h

    namespace Cpld_A
    {
       const int XXX;
    }

ABC_Existing.cc使用变量XXX执行'using namespace 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中。但是,所有这些文件都在同一个文件夹中并一起构建。

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

1 个答案:

答案 0 :(得分:2)

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

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

Cpld_A::XXX     
Cpld_B::XXX