Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Klasse als Parameter einer Funktion

  Alt 27. Nov 2006, 21:40
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
  Mit Zitat antworten Zitat