C++ : namespace conflicting declaration error

标签 c++ namespaces

我无法运行以下代码。由于命名空间不同,为什么仍然显示如下所述的错误? 错误:冲突声明“NS2::Base B” NS2::基地B;

#include<iostream>
using namespace std;

namespace NS1
{
    class Base
    {
        int x=4;
        public:
            void disp()
            {
                cout<<x<<endl;
            }
    };
}

namespace NS2
{
    class Base
    {
        int x=7;
        public:
            void disp()
            {
                cout<<x<<endl;
            }
    };
}

int main()
{
    NS1::Base B;
    NS1:B.disp();
    NS2::Base B;
    NS2::B.disp();
}

最佳答案

命名空间只包含其中声明的内容,在您的例子中是两个类 Base。然而,这两个名为 B 的对象并未在任何命名空间中声明(但都限定在函数 main 范围内),因此您会遇到声明冲突错误。在不同命名空间中声明的关联类并不重要。

关于C++ : namespace conflicting declaration error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46821474/

相关文章:

c++ - 'GPU activities' 和 'API calls' 在 'nvprof' 的结果中有什么区别?

c++ - Qt 的正则表达式 - indexIn(const QString &) 无法按预期工作

c++ - inotify_add_watch 失败,没有这样的文件或目录

android - 带有操作栏的意外 namespace 前缀

C++编译器无法找到函数(与命名空间相关)

c++ - QT服务器端写函数有错误(在线程0中停止...)

c++ - 从 Spy++ 窗口获取文本

c++ - 通过引用传递 c++ 与命名空间中的类

namespaces - Racket R5RS "no #%app syntax transformer is bound"

python - 当我使用 dir([user-defined object]) 时,为什么它还会返回对象父类的命名空间中的名称?