![]() |
Methodenaufruf einer bestimmten Klasse erzwingen
Die Methode meiner realen Klasse wird nicht aufgerufen, wie bekomme ich das hin.
Mein Code:
Delphi-Quellcode:
Ich müsste irgendwie den Aufruf der abgeleiteten Klasse erzwingen - aber wie?
Type
tMyList = class( tList ) Procedure Add( Const cClass : tMyBaseClass ) ; End ; tMyclassDef = class of tMyBaseClass ; tMyBaseClass = class classTyp : tmyClassDef ; Procedure Clone ; Virtual ; End ; tMySpezielleKlasse = class ( myBaseClass ) Procedure Clone ; Override ; End ; ... abc := tMySpezielleKlasse.create ; abc.ClassType := tMySpezielleKlasse ; List := tMytMyList.create ; List.Add ( abc ) ; // jetzt kommt das Problem ab_neu := tMyBaseClass( List[0] ).Clone ; // ruft das Clone von tMyBaseClass auf lClassType := tMyBaseClass( List[0] ).ClassType ; ab_neu := ( List[0] as lClassType ).Clone ; // ruft auch das Clone von tMyBaseClass auf // da wichtige Objekte Instanziert werden müssen, muss das Clone meiner speziellen // Klasse aufgerufen werden ... Weiß jemand einen Rat. Gruß |
AW: Methodenaufruf einer bestimmten Klasse erzwingen
Guten Morgen,
besteht das Problem immer noch wenn Du die Methode abstract definierst?
Delphi-Quellcode:
Grüße
tMyclassDef = class of tMyBaseClass ;
tMyBaseClass = class classTyp : tmyClassDef ; Procedure Clone ; Abstract; Virtual ; End ; Klaus |
AW: Methodenaufruf einer bestimmten Klasse erzwingen
in TMyClassDef Clone auf Virtual ;abstract; setzen
|
AW: Methodenaufruf einer bestimmten Klasse erzwingen
Abstract besagt nur, daß man in tMyBaseClass für Clone keinen Code hinterlegen will.
Das hat aber garnichts mit dem Aufruf zu tun.
Delphi-Quellcode:
sollte in Delphi doch eigentlich nicht funktionieren. :shock:
abc.ClassType := tMySpezielleKlasse ;
Und wozu soll dieses gut sein? Ansonsten sollte dein Code eigentlich funktionieren. Kannst du mal bitte ein komplettes Beispielprojekt hochladen? Welche Delphi-Version nutzt du denn? Warum nutzt du TList und nicht TObjectList, für die Verwaltung deiner Objekte, bzw. als Vorfahre von tMyList? Und was macht dein Add intern? |
AW: Methodenaufruf einer bestimmten Klasse erzwingen
Was für einfache Sachen man manchmal übersehen kann ...
Delphi-Quellcode:
Ich habe die Methode Clone in der abgeleiteten Klasse als Virtual und nicht als Override deklariert. Dann kann es auch nicht funktionieren.
tMyclassDef = class of tMyBaseClass ;
... tMySpezielleKlasse = class ( myBaseClass ) Procedure Clone ; Virtual; // <= Fehler Virtual anstatt Override End ; Danke für eure Hilfe. |
AW: Methodenaufruf einer bestimmten Klasse erzwingen
Dein erstes Post sagt etwas anders.:-D
|
AW: Methodenaufruf einer bestimmten Klasse erzwingen
Das kommt davon, wenn man nicht das postet, womit man Probleme hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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