Hallo,
es kann auch der Fall eintreten, dass die Klassen in getrennten units stehen müssen.
Hier kenne ich nur eine Lösung über eine "Zwischenunit" und Polymorphie.
Die Klassen TClass2 und TClass4 sind in getrennten
unit deklariert.
in unit3 in der jeweils ein Vorfahre für TClass2 (TClass31) und TClass4 (TClass32)
deklariert
Delphi-Quellcode:
unit Unit3;
interface
Type
TClass31 =
class(TObject)
private
public
end;
TClass32 =
class(TObject)
private
public
end;
implementation
end.
In unit2 wird jetzt unit3 eingebunden und FClass als TClass32 deklariert
jedoch als TClass4 erzeugt.
Delphi-Quellcode:
unit Unit2;
interface
uses unit3;
Type
TClass2 =
class(TClass31)
private
FClass : TClass32;
public
constructor Create;
destructor Destroy;
override;
end;
implementation
uses unit4;
{ TClass2 }
constructor TClass2.Create;
begin
inherited Create;
FClass:=TClass4.Create;
end;
destructor TClass2.Destroy;
begin
FClass.Free;
inherited Destroy;
end;
end.
In unit4 wird ebenfalls unit3 eingebunden FClass als TClass31 deklariert
jedoch als TClass2 erzeugt.
Delphi-Quellcode:
unit Unit4;
interface
uses unit3;
Type
TClass4 =
class(TClass32)
private
FClass : TClass31;
public
constructor Create;
destructor Destroy;
override;
end;
implementation
uses unit2;
{ TClass4 }
constructor TClass4.Create;
begin
inherited Create;
FClass:=TClass2.Create;
end;
destructor TClass4.Destroy;
begin
FClass.Free;
inherited Destroy;
end;
end.