Ich habe im Moment eine zirkuläre Unit Referenz in meinem Programm, mir ist schon allgemein klar wie ich die behebe, aber ich frage mich ob es eine schöne Möglichkeit diese zu beheben, die auch noch typ-sicher ist.
Hier mal vereinfacht die beiden Klassen:
Code: Alles auswählen
unit SPBuff
uses SPPlayer;
TTemporaryBuff = class
[...]
// Wendet einen temporaeren Effekt auf einen Spieler an.
procedure Apply(APlayer: TPlayer);
Code: Alles auswählen
unit SPPlayer
uses SPBuff;
TPlayer = class
FListOfActiveBuffs: TTemporaryBuffList;
function getBuff(AIndex: integer): TTemporaryBuff;
[...]
Gibt es hierfür eine schöne Lösung, bei der ich nicht einfach eins von beiden durch TObject ersetze und einfach bei den Prozeduren in die erste Zeile ein assert(AObject is TPlayer) packe?
Ich fände es nämlich schön, wenn der Compiler die Typen irgendwie überprüfen könnte (am besten schon zur Compilezeit, asserts sind ja erst zur Laufzeit).
Vielen Dank schonmal im Vorraus,
Gruß Knittel