我有2个班,ClassA并且ClassB,各自在自己的独立的单元,UnitA和UnitB.
UnitA用途UnitB.这允许ClassA调用构造函数ClassB.ClassB's然而,部分功能需要使用ClassA's方法.我无法UnitB使用UnitA,否则这会导致循环引用.允许从内部ClassB访问ClassA's方法有什么替代方法UnitB?
这很大程度上取决于两个类如何相互使用.如果一个类在实现中使用另一个类而不是接口,那么您可以将uses子句中的该单元从该interface部分向下移动到该implementation部分.
这可以解决这个问题:
UnitA;
interface
uses
Classes, UnitB;
type
TClassA = class(TObject)
end;
...
Run Code Online (Sandbox Code Playgroud)
.
UnitB;
interface
uses
Classes;
type
TClassB = class(TObject)
end;
implementation
uses
UnitA;
...
Run Code Online (Sandbox Code Playgroud)
但是,如果两个类的接口彼此依赖,那么您别无选择,只能将两个类放在同一个单元中(并使用前向声明).
UnitA;
interface
uses
Classes;
type
TClassA = class;
TClassB = class;
TClassA = class(TObject)
end;
TClassB = class(TObject)
end;
...
Run Code Online (Sandbox Code Playgroud)
在极少数情况下,您甚至可以将整个类定义向下移动到implementation.如果您需要在其他地方实际使用该类,那么这将没有用.
UnitB;
interface
implementation
uses
Classes, UnitA;
type
TClassB = class(TObject)
end;
...
Run Code Online (Sandbox Code Playgroud)
根据复杂性,通常的做法是将共同的代码放在它自己的独立单元中.例如常量,记录数组类型,全局变量等.这个公共单元不得使用这些单元中的任何其他单元.
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |