Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
9. Sep 2012
:mrgreen:
Das Problem ist, dass die Elternklasse keinen primitven Datentypen zurückgibt, sondern eine Objektinstanz. In den abgeleiteten Klassen soll nun auch eine Instanz einer abgeleiteten Klasse zurückgegeben werden, deren Methoden man dann ohne Cast nutzen kann.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
8. Sep 2012
Sieht so aus :mrgreen:
P.S.: http://www.detlef-heibing.de/programmierung/delphi/tipps-tricks-tutorials/20-objektinstanzen-als-funktionsrueckgabe.html
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
8. Sep 2012
Moin Christian,
das ist etwas anderes, aber dann ist der Code auch ausführlicher ;). Als Negativbeispiel sehe ich z.B. GetFormImage an, da man die so ermittelte Instanz selbst freigeben muss, das ist IMO sehr unschön.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
8. Sep 2012
Nunja, der Rückgabetyp ist ja nun einmal vom Typ noFile. Du könntest diesen aber nach dem Funktionsaufruf auf den "Untertyp" überprüfen. Oder man macht es ganz anders und übergibt noch einen Klassentypen, in der Art
type
noFileClass = class of noFile;
function GetOSFile(aType: noFileClass): noFile;
begin
Result := aType.Create;
end;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by DeddyH,
8. Sep 2012
Ist das eine reguläre Funktion oder eine Methode? Falls Letzteres, wurde sie in der Basisklasse als virtuell deklariert und in der abgeleiteten überschrieben? Im Übrigen bin ich persönlich kein Freund von Funktionen, die eine Objektinstanz zurückgeben, die sie selbst erzeugen.