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

发布于 2025-01-06 06:42:35 字数 515 浏览 1 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

把人绕傻吧 2025-01-13 06:42:35

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

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

Cpld_A::XXX     
Cpld_B::XXX     

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:

Cpld_A::XXX     
Cpld_B::XXX     
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文