Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Richtige Objekt-Kopie? Aber wie?

  Alt 13. Feb 2007, 17:17
Ich habe das für meine Kurven-Hierarchie mit Basisklasse TKurve so gelöst:
Delphi-Quellcode:
type
  TKurve = class(TPureInterfacedObject, IDrawable)
  private
    constructor CreateRaw; // nur fürs Klonen
    //...
  public
    //...
    function Clone: TKurve;
    procedure Assign(AKurve: TKurve); virtual;
    //...
  end;
Delphi-Quellcode:
constructor TKurve.CreateRaw;
begin
  inherited Create;
end;

function TKurve.Clone: TKurve;
type
  TKurvenClass = class of TKurve;
begin
  // Da der Konstruktor über ClassType aufgerufen wird (und nicht direkt
  // TKurve.CreateRaw), wird eine Instanz des richtigen Typs erzeugt:
  Result := TKurvenClass(ClassType).CreateRaw;
  Result.Assign(Self);
  Assert(Result.ClassType = ClassType);
end;
Vielleicht nützt dir das was.

Ciao, Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat