模棱两可的类命名空间问题

Posted

技术标签:

【中文标题】模棱两可的类命名空间问题【英文标题】:Ambiguous Class Namespace Issue 【发布时间】:2011-03-13 20:55:54 【问题描述】:

我...觉得这个问题真的很傻,但我不知道如何解决这个问题。

这是我的代码(Objective-C++)的一个小片段:

#include "eq/eq.h"
namespace eqOther

    class Window : public eq::Window //<-- Error occurs here
    
    public:
        Window( eq::Pipe* parent ) : eq::Window( parent ) 

        void popup();

    protected:
        virtual ~Window() 

        virtual bool processEvent( const eq::Event& event );

    private:

    ;

我得到的错误是:Use of 'Window' is ambiguous,它说它在 X.h 中声明为 typedef XID Window,在 window.h 中声明为 class eq::Window,这是它的超类。

我要声明的课程应该在namespace eqOther 是吗? eqOther::Windoweq::Window 不同!?

我觉得自己太笨了,但我只是不明白我做错了什么......

【问题讨论】:

您收到警告还是错误消息? 我会使用::eq::Window 来确定。但我也看不出你做错了什么。它抱怨您的类型名称与 rood 命名空间中定义的 typedef 冲突。您是否在 eqOther 的命名空间声明中包含了 X.h 你确定你没有一些“使用命名空间 eq;”在你的标题中的某个地方? 啊!就是这样@Dmitry!愚蠢的!当然,它没有抛出任何其他错误,因为“window.h”包含在“stupidme.h”之后,而其他所有内容都在它之前。叹息...谢谢大家! @Dmitry,将您的评论作为答案,以便我接受! 很高兴能帮上忙 :) 【参考方案1】:

也许你的标题中有一些using namespace eq;

【讨论】:

以上是关于模棱两可的类命名空间问题的主要内容,如果未能解决你的问题,请参考以下文章

当命名空间不明确时使用特定的类

交友/使用不同命名空间中的类

thinkphp 5.0 命名空间

11类加载器的命名空间

在 powershell 中列出 .NET 命名空间的类?

thinkphp5.0命名空间