Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
19. Jan 2010
Die Forward-Deklaration ist hier nicht nötig, da der Typ schon bekannt ust und auch daß es sich um eine Klasse handelt.
(aber schaden tut's zumindestens nichts)
Das Problem liegt z.B. hier an der Tatsache, daß TFuu erst später deklariert wird und zu diesem Zeitpunkt also noch unbekannt ist.
type
TFuu = class;
TFoo = class(TBier)
FSubFuu: TFuu;
end;
TFuu = class(TBar)
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
19. Jan 2010
Grund: Der Record ist zu diesem Zeitpunkt (also innerhlab seiner eigenen Deklaration) noch nicht fertig.
Der Compiler weiß also noch nicht wie groß dieser mal wird
und kann demnach die Position des nächsten Feldes nicht berechnen.
Grund2: Dieses würde einen unendlichgroßen Record ergeben,
welches einfach nicht möglich ist.
> der Record wäre ja unendlich Mal in sich selber verschachtelt
...