Einzelnen Beitrag anzeigen

Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#12

Re: Klasse sich selbst in eine abgeleitete konvertieren

  Alt 1. Mär 2010, 14:15
Geht deshalb nicht, weil der Constructor von TPersistent nicht virtual ist und damit nicht in der VMT steht. Folgendes geht :
Delphi-Quellcode:
Type
  TTest = class;
  TTestClass = class of TTest;

  TTest = class (TPersistent)
    class function CreateInstanze(aClass : TTestClass) : TTest;
    constructor Create; virtual;abstract;
  end;


  TAbgeleitet = class(TTest)
    constructor Create; override;
  end;

{ TTest }

class function TTest.CreateInstanze ( AClass: TTestClass) : TTest;
begin
  Result := aClass.Create;
end;

{ TAbgeleitet }

constructor TAbgeleitet.Create;
begin
  Beep;
end;


procedure TForm1.btnClick(Sender: TObject);
var
  lClass : TTest;
begin
  lClass := TTest.CreateInstanze(TAbgeleitet);
end;
Der Konstructor von TAbgeleitet wird aufgerufen.
Die Verwendung von GetClass ist hierbei nicht nötig, weil bei einem Klassenreferenztypen gleich der Pointer auf die VMT mitgegeben wird und nicht erst alle VMT's durchsucht werden müssen ( Performance )
Glückauf
  Mit Zitat antworten Zitat