Delphi - 对象树中的继承链

Delphi - Inheritance Chain in a Object Tree

我正在尝试在父子对象树中创建一个继承链。

假设我有一个类型为 A 的对象,它有一个 A 数组,还有一个 B 数组。 B 是另一个具有 C 数组的对象。 C 继承自 A,但略微修改了 A 的版本。 所以我有:

type
A= class
   fArrayOfA : Array of A;
   fArrayOfB : Array of B;
end;

C= class(A)
//body
end;

B= class
   fArrayOfC : Array of C;
end;

看来对象的顺序很重要,Delphi编译器是从上到下读取的。所以 A 中的 "Array of B;" 给出了一个未声明的标识符,除非我将类型 B 放在 A 之上。但是后来我得到 B 中 "Array of C" 的错误,因为它不知道 C 是什么。

知道是否缺少任何标识符可以解决这个问题吗?我尝试将 A 拆分为 unit1,将 B&C 拆分为 unit2,现在我有 "Circular Reference"!

你可以做一个所谓的"Forward class"定义;

TB = class; // Forward Class

TA = class(TSomething)
  .....
end;

TB = class(TSomething)
  .....
end;

它基本上允许 TA 在完全声明之前就知道 TB

去阅读 Delphi 帮助中的 Classes and Objects (Delphi)