Vererbung - Designfrage
Delphi-Quellcode:
Zu Beginn fülle ich meine TList mit TGeneral-Objekten.
type
TGeneral = class... TSpecified1 = class(TGeneral)... TSpecified2 = class(TGeneral)... TSpecified3 = class(TGeneral)... TList of TGeneral... Irgendwann zur Laufzeit ermittle ich dann die Typen der Objekte und möchte dann auch entsprechend die TGeneral Objekte in TSpecified1, TSpecified2 und TSpecified3 "einsortieren". Wie macht man dies am besten? Meine Idee wäre es, ein neues TSpecified1, TSpecified2 und TSpecified3 zu erzeugen, die properties des alten TGeneral zu übernehmen, dann das alte TGeneral freigeben und das neue TSpecifiedX an den entsprechenden Index in der Liste einzufügen. Oder gibt es dafür eine schönere Vorgehensweise? |
Re: Vererbung - Designfrage
Befinden sich gemischte Typen in der Liste? Wenn nicht, dann gleich den passenden Typ, sonst den Typ beim Zugriff Casten.
|
Re: Vererbung - Designfrage
Zu Beginn sind alle Objekte in der Liste vom Typ TGeneral,
erst nach einer Analyse werden die Typen der TGeneral Objekte bestimmt. |
Re: Vererbung - Designfrage
Wenn z.B. in den abgeleiteten TSpecified1 und Co. keine neuen Variablen oder virtuelle Methoden eingeführt wurden, also wenn die "Verwaltung" und der Speichervrebrauch gleich sind, dann könnte man zwar den "internen" Typenzeiger ändern, aber ich würde davon abraten und den "empfohlenen" Weg empfehlen ... also neues Objekt erzeugen und die Eigenschaften kopieren.
Delphi-Quellcode:
Specified := TSpecified1.Create;
Specified.Assign(General); General.Free; |
Re: Vererbung - Designfrage
Zitat:
|
Re: Vererbung - Designfrage
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz