![]() |
abgeleitete Objekte wie Parent-Objekte verwenden
Moin,
war nicht leicht eine sinnvolle Beschreibung des Problem zu finden. Ich habe eine Objectklasse aus der ich eine weitere abgeleitet und mit zusätzlichen Variablen versehen habe:
Delphi-Quellcode:
Jetzt habe ich eine Routine, die ein TObj_1 erwartet, z.B.
TObj_1 = class(TObject)
TObj_2 = class(TObj_1)
Delphi-Quellcode:
Dieser Routine möchte ich ein TObj_2 übergeben, weil ich die zusätzlichen Informationen dort nicht benötige.
procedure MachWasRichtig(input : TObj_1);
Ist das korrekt, dann
Delphi-Quellcode:
zu verwenden? Es funktioniert zwar, aber ich bin mir nicht ganz sicher ob das auch richtig ist.
MachWasRichtiges(TObj_1(Obj_2));
Grüße, Messie |
Re: abgeleitete Objekte wie Parent-Objekte verwenden
der cast ist unnötig. Anstelle von
Delphi-Quellcode:
kannst du auch einfach nur
MachWasRichtiges(TObj_1(Obj_2));
Delphi-Quellcode:
schreiben. Denn Obj2 ist ja von TObj1 abgeleitet.
MachWasRichtiges(Obj_2);
|
Re: abgeleitete Objekte wie Parent-Objekte verwenden
Ja aber Obj_2 hat ja eine größere Speichermaske. Wird die ohne Cast korrekt zugeschnitten?
Grüße,Messie |
Re: abgeleitete Objekte wie Parent-Objekte verwenden
Zitat:
TObject1 hat meinetwegen 2 Felder, eins an offset 8 und eins an 12. Insgesamt ist eine Instanz davon vllt 16 bytes groß. TObject2 erbt von Tobject1 und damit auch genau diese Struktur, alles weitere was hinzugefügt wird, landet hinten dran. Wenn ich also das erste Feld von TObject1 auslesen will kann ich einfach 4 Bytes von (self^ + 8 ) auslesen. Dabei ist es also egal ob die Instanz dahinter TObject1 oder TObject2 ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz