Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klassen-Querverweise (https://www.delphipraxis.net/13541-klassen-querverweise.html)

mirage228 20. Dez 2003 18:34


Klassen-Querverweise
 
Hallo,

ich habe 2 Klassen, welche jeweils eine Membervariable der anderen Klassen haben. Wie kann ich die beiden Klassen so deklarieren, da dieser "Querverweis" möglich ist?
Bisher bekomme ich in der Klasse die als erstes steht, logischweise, eine Fehlermeldung "Undefinierter Bezeichner" beim dekalieren der Variable des Typs von der anderen Klassen...

mfG
mirage228

Jens Schumann 20. Dez 2003 18:37

Re: Klassen-Querverweise
 
Hallo,
das geht so:

Delphi-Quellcode:
Type
 
 TMyObject 2 = class;
 
 TMyObject 1 = class
 ...
 property MyObject2 : TMyObject2 ...
 ...
 
 TMyObject2 = class
 ...
 property MyObject1 : TMyObject1 ...
 ...

jbg 20. Dez 2003 18:43

Re: Klassen-Querverweise
 
So lange du beide Klassen in einer Unit hast, kannst du forward Klassen benutzen:
Delphi-Quellcode:
type
  TMyClass = class;
  TMySecondClass = class;

  TMyClass = class(TXy)
    FSecond: TMySecondClass;
  end;
  TMySecondClass = class(TAb)
    FFirst: TMyClass;
  end;

mirage228 20. Dez 2003 19:06

Re: Klassen-Querverweise
 
Danke Leute. Beides funktioniert einwandfrei.

MfG
mirage228

Jens Schumann 20. Dez 2003 19:10

Re: Klassen-Querverweise
 
Hallo
Zitat:

Zitat von mirage228
Beides funktioniert einwandfrei.

kein Wunder. Ist ja auch zweimal der gleiche Vorschlag.

nailor 9. Jun 2005 17:57

Re: Klassen-Querverweise
 
Zitat:

Zitat von jbg
So lange du beide Klassen in einer Unit hast, kannst du forward Klassen benutzen:
Delphi-Quellcode:
type
  TMyClass = class;
  TMySecondClass = class;

  TMyClass = class(TXy)
    FSecond: TMySecondClass;
  end;
  TMySecondClass = class(TAb)
    FFirst: TMyClass;
  end;

*uralten Thread auskram*, aber es ist genau meine Frage!

Kann mal jemand jgb's Beitrag so abändern, dass er mit "Wenn du allerdings nicht beide Klassen in einer Unit hast, ..." anfängt?

Robert_G 9. Jun 2005 18:03

Re: Klassen-Querverweise
 
Zitat:

Zitat von nailor
Kann mal jemand jgb's Beitrag so abändern, dass er mit "Wenn du allerdings nicht beide Klassen in einer Unit hast, ..." anfängt?

C#-verwöhnt?
Wenn du ohne abstrakte Vorgänger/Interfaces arbeiten willst bräuchtest du einen multipass compiler. (wie in Java, C#, Chrome,...)

nailor 9. Jun 2005 18:09

Re: Klassen-Querverweise
 
c# verwöhnt! ;)

ist der langen rede kurzer sinn "nein"?

Robert_G 9. Jun 2005 18:31

Re: Klassen-Querverweise
 
Zitat:

Zitat von nailor
c# verwöhnt! ;)

ist der langen rede kurzer sinn "nein"?

Hübsch wird's nicht werden aber es geht halbwegs...
In eine Unit packst du nur die voneinander abhängigen Interfaces oder auch abstrakte Klassen, deren Nachfolger du dann in einzelne Dateien packen kannst.
So mache ich es jedenfalls meistens. (Ich hasse es wenn Units größer als 1-2 Bildschirme werden. ;) )
Und aus lauter Faulheit ein Beispiel zu tippen (was du bestimmt gleich erfragen würdest. :mrgreen: )
Hier habe ich letztlich etwas Code hochgeladen, der so strukturiert sein sollte. ;)

nailor 9. Jun 2005 19:10

Re: Klassen-Querverweise
 
wie sähe es bei folgendem beispiel aus?

Delphi-Quellcode:
unit uTest;

interface

uses uTest2

type
  Parent = class
    fChild : Child;
  end;

implementation

end.
Delphi-Quellcode:
unit uTest2;

interface

uses uTest;

type
  Child = class
    fPartent : Parent;
  end;

implementation

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
Seite 1 von 2  1 2      

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