Hallo,
das Beispiel von Jens wird nicht in allen Fällen funktionieren - und das liegt nicht nur daran, daß er den Übergabeparameter nicht benutzt.
Wenn die abgeleiteten Klassen den (statischen) Konstruktor von TObject überschreiben, wird der neue Konstruktor
nicht aufgerufen. Um dies zu beheben, muß die Deklaration wie folgt abgeändert werden:
Delphi-Quellcode:
type
// TMeinObjectClass = class of TObject; // kein Aufruf des Konstruktors
TMeinObjectClass = class of TMeinObject; // Konstruktor wird aufgerufen
TMeinObject = class (TObject)
public
constructor Create;
end;
TMeinAnderesObject = class (TMeinObject)
public
constructor Create;
end;
constructor TMeinObject.Create;
begin
inherited;
ShowMessage (ClassName + '.Create');
end;
constructor TMeinAnderesObject.Create;
begin
inherited;
ShowMessage (ClassName + '.Create');
end;
function ErzeugeMeinObjekt (aClass: TMeinObjectClass): TObject;
begin
Result := aClass.Create;
end;
Gruß Hawkeye