首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >object.Object.Monitor优先于自己的Monitor类

object.Object.Monitor优先于自己的Monitor类
EN

Stack Overflow用户
提问于 2014-04-23 14:10:06
回答 1查看 91关注 0票数 2

我正在用D2编写一个呈现系统,但与我自己的monitor类相比,D更喜欢它自己的监视器类object.Object.Monitor (顺便说一下,我从未导入)。

有什么方法可以防止D使用它的监视器类而不是我的呢?我知道我可以附加传统的下划线,或者简单地使用它的全名(myapp.graphics.x11.Monitor),但是这个类将被大量使用,所以这些修复并不理想。

代码语言:javascript
复制
module app;

class Monitor {
    public Monitor returnMe() {
        return this; // Error: cannot implicitly convert expression (this) of type app.Monitor to object.Object.Monitor
    }
}


void main() {
    Monitor monitor = new Monitor;
    monitor.returnMe();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-23 14:38:03

我认为这是因为在类Monitor中,您的类名还不完全存在,所以编译器认为已经存在的Monitor (它在object.d中是自动导入的)更匹配。

实际上,我认为这应该被认为是编译器错误,因为如果另一个Monitor不存在,那么这段代码就可以工作了。编辑:实际上,由于Monitor是对象中的嵌套类,这是/not/编译器错误,所以嵌套名称总是覆盖外部名称。因此,奇怪的是,对象基类有一个嵌套类,名为Monitor。/edit

但是现在要解决这个问题,您可以在Monitor类中使用typeof(this)而不是它的名称。这将消除内部的歧义,外部代码仍然正确工作:

代码语言:javascript
复制
module app;

class Monitor {
     // changed the name only inside the class
    public typeof(this) returnMe() {
        return this;
    }
}


void main() {
     // works normally here
    Monitor monitor = new Monitor;
    monitor.returnMe();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23246945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档