Zitat:
Delphi-Quellcode:
procedure TMain.LoadObject<T>(aObject: T);
begin
aObject := T.Create;
end;
Wie gesagt, ohne Var/Out-Parameter, oder als als Funktion, ist das nicht wirklich funktionsfähig.
Oder der ganz normale und überall übliche Weg, ohne Generics.
Delphi-Quellcode:
type
TBasisClass = class of TBasis;
TBasis = class
constructor Create; virtual; // eventuell auch noch abstract
end;
TRot = class(TBasis)
end;
function TMain.CreateObject(T: TBasisClass);
begin
Result := T.Create;
end;
X := TMain.CreateObject(TRot);
Ich vermute auch, das es, ohne eine virtuellen Contructor, selbst bei den Generics nicht funktionieren wird.
OK, oder man sucht sich über die neu/erweiterte
RTTI den entsprechenden Constructor raus und nutzt Diesen.