在Delphi 2010中如何设置通用类型的前向声明?
发布时间:2020-12-15 10:09:15 所属栏目:大数据 来源:网络整理
导读:我碰到一个似乎是一个非常古典的问题:一个项目和一个集合类,两个引用对象,需要一个前向声明.我正在使用更新5的Delphi 2010. 这对非通用类很好,但我无法解决E2086错误与泛型类型: type // Forward declarations TMyElement = class; // E2086: Type 'TMyEle
我碰到一个似乎是一个非常古典的问题:一个项目和一个集合类,两个引用对象,需要一个前向声明.我正在使用更新5的Delphi 2010.
这对非通用类很好,但我无法解决E2086错误与泛型类型: type // Forward declarations TMyElement = class; // E2086: Type 'TMyElement' is not yet completely defined TMyCollection<T:TMyElement> = class // end; TMyElement = class FParent: TMyCollection<TMyElement>; end; 切换类声明顺序时也会发生同样的问题. 我没有在这里或QualityCentral中找到任何这个问题的引用(E2086的其他问题被发现,但与这个用例无关) 我现在唯一的解决方法是将父对象声明为TObject,并在需要时将其转换为集合泛型类型(不是一个干净的解决方案…) 你是怎么解决这个问题的,还是转发你的泛型类呢? 谢谢, [2011年10月22日修订] QualityCentral上的跟进: 教统局最近已经封闭以下决议案: 我只有Delphi 2010.有人可以确认它已经在Delphe XE2 Update1中修复,还是意味着它按照预期工作? [编辑2011年10月23日] EMB最终答复: 解决方法
你可以通过声明一个祖先类来解决它:
type TBaseElement = class end; TMyCollection<T: TBaseElement> = class end; TMyElement = class(TBaseElement) private FParent: TMyCollection<TBaseElement>; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |