【问题标题】:Delphi - Inheritance Chain in a Object Tree [duplicate]Delphi - 对象树中的继承链
【发布时间】:2016-02-12 17:01:33
【问题描述】:

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

假设我有一个 obj 类型 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编译器是从上往下读的。所以“B数组;” in A 给出了一个未声明的标识符,除非我将类型 B 放在 A 之上。但随后我得到 B 中“C 数组”的错误,因为它不知道 C 是什么。

知道是否缺少任何可以解决此问题的标识符吗?我尝试将 A 拆分为 unit1,将 B&C 拆分为 unit2,现在我有了“循环参考”!

【问题讨论】:

    标签: delphi oop inheritance tree


    【解决方案1】:

    您可以执行所谓的“转发类”定义;

    TB = class; // Forward Class
    
    TA = class(TSomething)
      .....
    end;
    
    TB = class(TSomething)
      .....
    end;
    

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

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

    【讨论】:

    • 不知道我能做到。非常感谢!
    • 需要注意的是,声明需要在同一个type部分中。
    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2011-10-08
    • 1970-01-01
    • 2013-07-20
    • 2015-01-20
    相关资源
    最近更新 更多