Zitat von
changlee:
// inherited aufrufen und casten
was meinst du mit casten?
Naja, da du in der Basisklasse ja sowas machst:
Delphi-Quellcode:
function TBaseList.getitem(index: Integer): TBaseItem;
begin
Result = fitems[index];
end;
Solltest du in der abgeleiteten Klasse sowas machen:
Delphi-Quellcode:
function TMyList.getitem(index: Integer): TMyItem; // override;
begin
Result = inherited getitem(index) as TMyItem;
end;
Zitat:
Mir fällt gerade auf: wenn die Listenelemente kein record mehr sind, sondern Klassen, dann kann ich ja im Prinzip gar nichts mehr in der Liste umsortieren (weil Instanz1 := Instanz2 ja nur eine Referenz zuweist, aber keinen Inhalt.)
Natürlich kannst du umsortieren.
Delphi-Quellcode:
temp = getitem(1);
setitem(1, getitem(2));
setitem(2, temp);
Zitat:
Dann widerum müsste ich ja auch in der Funktion GetItem irgendwo jedes einzelne Feld der Klasse abfragen und zuweisen.
result := fItems[i]
würde dann ja meines Wissens nicht funktionieren.
Wenn das tatsächlich so ist, dann hätte einen Risen Aufwand und müsste dann auch das umsortieren für jede Liste unterschiedlichen Typs neu implementieren.
Oder liege ich falsch?
Wie gesagt, die grundlegenden Operationen kannst du in der Basisklasse einführen und implementieren, und später musst du dann nur noch die Logik implementieren die bei dem neuen Typ dazugekommen ist