delphi – 我有两个单元,每个单元中有一个需要彼此运行的类.如何
发布时间:2020-12-15 09:39:04 所属栏目:大数据 来源:网络整理
导读:我有2个类,ClassA和ClassB,每个类都在它们自己的单独单元UnitA和UnitB中. UnitA使用UnitB.这允许ClassA调用ClassB的构造函数.但是,ClassB的部分功能需要使用ClassA的方法.我无法使UnitB使用UnitA,否则会导致循环引用.在允许ClassB从UnitB中访问ClassA的方法
我有2个类,ClassA和ClassB,每个类都在它们自己的单独单元UnitA和UnitB中.
UnitA使用UnitB.这允许ClassA调用ClassB的构造函数.但是,ClassB的部分功能需要使用ClassA的方法.我无法使UnitB使用UnitA,否则会导致循环引用.在允许ClassB从UnitB中访问ClassA的方法时,我还有什么办法? 解决方法
这很大程度上取决于两个类如何相互使用.如果一个类在实现中使用另一个类而不是接口,那么您可以将uses子句中的该单元从接口部分向下移动到实现部分.
这可以解决这个问题: UnitA; interface uses Classes,UnitB; type TClassA = class(TObject) end; ... . UnitB; interface uses Classes; type TClassB = class(TObject) end; implementation uses UnitA; ... 但是,如果两个类的接口彼此依赖,那么您别无选择,只能将两个类放在同一个单元中(并使用前向声明). UnitA; interface uses Classes; type TClassA = class; TClassB = class; TClassA = class(TObject) end; TClassB = class(TObject) end; ... 在极少数情况下,您甚至可以将整个类定义向下移动到实现.如果您需要在其他地方实际使用该类,那么这将没有用. UnitB; interface implementation uses Classes,UnitA; type TClassB = class(TObject) end; ... 根据复杂性,通常的做法是将共同的代码放在它自己的独立单元中.例如常量,记录数组类型,全局变量等.这个公共单元不得使用这些单元中的任何其他单元. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |