使用不同文件中的命名空间成员
在我的项目中,我有一个现有文件:
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 中。但是,所有这些文件都位于同一文件夹中并一起构建。
这个问题怎么会发生,我该如何解决这个问题? 感谢您的帮助!
In my project, I have an existing file:
ABC_Existing.h
namespace Cpld_A
{
const int XXX;
}
And ABC_Existing.cc uses the variable XXX doing 'using namespace Cpld'.
I created a new file:
XYZ_New.h
namespace Cpld_B
{
const int XXX;
}
And I am trying to use it in XYZ_New.cc. When I compile, I get error saying ambiguous declaration of variable XXX between Cpld_A and Cpld_B.
There is no relation between ABC_Existing and XYZ_New. And ABC_Existing.h is not included (directly or indirectly) in XYZ_New.h/cc. But, all these files are in the same folder and build together.
How can this problem happen, and how do I resolve this ?
Appreciate your help !!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最有可能的是,这种歧义是因为相同的命名空间以及其中的符号名称都通过某种间接的模糊方式导入到当前的命名空间中。
解决歧义的一个简单方法是在引用符号时使用符号的完全限定名称:
Most likely, the ambiguity is because both the same namespaces and hence the symbol names within are imported in to your current namespace by some indirect obscure way.
A simple way to resolve the ambiguity is by using the fully qualified names of the symbols, when referring to them: