Forum: Algorithmen, Datenstrukturen und Klassendesign
by uligerhardt,
17. Jan 2024
Ich hab in unserem Code 6 Vorkommen von ClassType.*Create gefunden - 3 Clone-Methoden und 3 Verwendungen des Musters bei Third-Party-Klassen, wo wir keine Clone-Methode einbauen konnten (TGraphic z.B.).
Ist aber auch eine müßige Frage - ist halt eine Technik, die man bei Bedarf einsetzen kann.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by uligerhardt,
17. Jan 2024
Naja, in Delphi ist es ja üblich, in Klassenhierarchien eine Methode Assign zu haben. Dann kannst du Clone so implementieren:
function TAnimal.Clone: TAnimal;
begin
Result := TAnimalClass(ClassType).Create;
Result.Assign(Self);
end;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by uligerhardt,
15. Jan 2024
Äh, ja :oops:
... und sogar ohne virtuellen Konstruktor :shock:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by uligerhardt,
15. Jan 2024
Als erstes würde ich TAnimal mal einen virtuellen Konstruktor verpassen.
Und die Variante mit Class müsste prinzipiell funktionieren, wenn du etwas ergänzt:
type
TAnimalCLass = class of TAnimal; // Stichwort "Class reference" oder "Metaklasse"
Animal2 := TAnimalCLass(Animal1.Class).Create;
(freihändig hingetippt)