Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#3

AW: Vererbung mit mehrfach eingeschränktem TypParamater

  Alt 16. Mai 2014, 11:46
Und ohne die Forward-Deklarationen sieht der Code auch gleich viel übersichtlicher aus.
Delphi-Quellcode:
interface

type
  IKlasse1 = interface end;
  IKlasse2 = interface end;

  Klasse0<T: IKlasse1, IKlasse2> = class(TInterfacedObject)
    function Transform: T;
  end;

  Klasse1 = class(Klasse0<IKlasse1>) end;
  Klasse2 = class(Klasse0<IKlasse2>) end;

implementation

end.
Ich hätte zwar auch ODER gedacht, aber wenn das stimmt, dann kannst du das vielleicht über eine Interfacevererbung lösen:
Delphi-Quellcode:
type
  IBasisKlasse = interface end;
  IKlasse1 = interface(IBasisKlasse) end;
  IKlasse2 = interface(IBasisKlasse) end;

  Klasse0<T: IBasisKlasse> = class(TInterfacedObject) // oder Klasse0<T: IBasisKlasse> = class(TInterfacedObject, IBasisKlasse)
    function Transform: T;
  end;

  Klasse1 = class(Klasse0<IKlasse1>) end;
  Klasse2 = class(Klasse0<IKlasse2>) end;
Oder du schränkst es nicht all zu sehr ein:
Delphi-Quellcode:
type
  IKlasse1 = interface end;
  IKlasse2 = interface end;

  Klasse0<T: interface> = class(TInterfacedObject)
    function Transform: T;
  end;

  Klasse1 = class(Klasse0<IKlasse1>) end;
  Klasse2 = class(Klasse0<IKlasse2>) end;
[edit]
Ich mein natürlich IKlasse0, statt IBasisKlasse
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Mai 2014 um 11:51 Uhr)
  Mit Zitat antworten Zitat