![]() |
Externe Deklaration von Klassen
Hallo,
ich habe ein (in Delphi) aufwändiges Problem. Und zwar:
Delphi-Quellcode:
//Unit1:
uses Unit2; TKlasseA = class(TObject) KlasseB : TKlasse B; end; //Unit2: TKlasseB = class(TObject) Parent : PKlasseA; end; So, wie man sieht brauche ich in Klasse B einen Pointer auf seinen Parent. Es ist keine Option (für mich) beides in eine Unit zu packen. Da hat man natürlich die Möglichkeit, sowas per Forward-Deklaration zu lösen. Wenn ich Unit1 in Unit2 im Interface einbinde, dann hab ich natürlich eine Überkreuzung drin. Ich muss doch irgendwie eine Extern-Deklaration machen können, um dem Compiler zu sagen, dass da etwas existiert, was später noch dem Linker mitgeteilt wird. Besteht evtl die Möglichkeit den Code nur zu kompilieren und später zu linken? Ich hoffe ihr könnt mir weiterhelfen. |
Re: Externe Deklaration von Klassen
Zitat:
Zitat:
Zitat:
Einzige Lösung ist: Überwinde deinen Ordnungsdrang und apcke beides in eine Unit. Und wenn du meinst, dass das zu unübersichtlich wird, guck dir mal die VCL-units an ;) |
Re: Externe Deklaration von Klassen
Du kannst natürlich acuh nochmal dein Design überdenken: solange TKlasseB nicht auf Parent.KlasseB zugreifen muss, kannst du das Problem mit einer abstrakten TKlasseA lösen.
|
Re: Externe Deklaration von Klassen
Zitat:
Es wird ihm später ja noch mitgeteilt, was genau TKlasseA für ein Typ ist. Zitat:
|
Re: Externe Deklaration von Klassen
Zitat:
|
Re: Externe Deklaration von Klassen
Zitat:
|
Re: Externe Deklaration von Klassen
Zitat:
Ach ja, eine Alternative zu "Beides in eine Unit packen" gibt's noch: Benutze C# .net :mrgreen: |
Re: Externe Deklaration von Klassen
Zitat:
|
Re: Externe Deklaration von Klassen
Zitat:
|
AW: Externe Deklaration von Klassen
Bei Prism XE ist genau dieses Beispiel dabei. Ansonsten ist mir aber Delphi "sympatischer".
Ist es denkbar, dass die Embjaner Delphi künftig auf einen Multipasscompiler umstellen? Die unzulässigen Überkreuz-Bezüge sind m.E. das größte (bzw. einzige) Problem im Delphi. Oder ist das technisch ausgeschlossen? Eine entsprechende Möglichkeit würde m.E. VIELES deutlich vereinfachen (möglicher Verzicht auf Typecasts und Events). (Ich weiß, dass manche Entwickler solche Querbezüge ablehnen, aber man müsste sie ja nicht nutzen.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:26 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 by Thomas Breitkreuz