aber solange man Interfaces nicht in die gleiche Datei packt, hat man das gleiche Problem.
Und wenn man sie in eine Datei packt (bzw. nur die voneinander abhängigen Interfaces), dann eben nicht.
Es ist nun einmal eine Spracheigenschaft von Delphi, mehrere Klassen in einer Datei halten zu können um damit bestimmte Dinge zu regeln (private vs. strict private und eben Forward-Deklarationen).
Der klassische Ansatz ist die Forward-Deklaration:
Delphi-Quellcode:
Type
THund = Class;
THundebesitzer = Class
Property Hund : THund...
end;
THund = Class
property Besitzer : THundebesitzer;
End;
Und eigentlich ist das sehr schön lesbar, denn sobald man auf eine Forward-Deklaration stößt, weiß man, das hier Kreise im Spiel sind.
Im Übrigen löst die
VCL das Problem der zirkulären Referenzen ja nicht, weil sie TCustomXXX und TXXX implementiert, sondern indem sie die Klassen in einer Datei vorhält (soweit ich das überschaue, jedenfalls).