Autor Beitrag
Christian V.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 311

Win Xp Prof
Turbo Delphi 2005
BeitragVerfasst: Sa 05.07.08 15:26 
hallo, angenommen ich habe TKlasseA und TKlasseB, wie kann ich es erreichen, dass beide Klassen die jeweils andere instanzieren?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  TKlasseA = class
  private
    KlasseB: TKlasseB;
  end;
  
  TKlasseB = class
  private
    KlasseA: TKlasseA;
  end;


Zuerst habe ich versucht beide Klassen in je einer Unit zu haben, und sich dann mit Hilfe von uses gegenseitig zu referenzieren, allerdings bin ich dann auf das nette Phänomen "zirkuläre unit-referenz" gestossten :D
Der andere Ansatz, wie oben im Codebeispiel zu sehen, beide Klassen in der gleichen Unit zu haben, funktionierte auch nicht.

BTW: nennt sich KlasseB und KlasseA hier "Feld"? Oder wie bezeichnet man das?

_________________
Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 05.07.08 15:58 
Hi,

Jop, das sind Feldvariablen.

Für dein Problem gibt es drei Lösungen:
1): Du leitest von einer Klasse ab und deklarierst das erste Feld allgemeiner.
2): Deklariere die erste Feldvariable als TObject und mache einen Suche in der Entwickler-Ecke TYPECAST.
3), habe ich vor kurzem bei der Deklaration der Klasse TList gesehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  TKlasseA = class;

  TKlasseB = class (TObject)
    FInstanz: TKlasseA;
  end;

  TKlasseA = class(TObject)
    FInstanz: TKlasseB;
  end;


mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Christian V. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 311

Win Xp Prof
Turbo Delphi 2005
BeitragVerfasst: Sa 05.07.08 16:17 
Bei 1) verstehe ich nicht ganz wie du das meinst.

Nummer 2 möchte ich eigentlich nicht, da ich dann auch von aussen her immer den Typecast benutzen muss, und das ziemlich oft. Sieht nicht sehr sauber aus, finde ich.

3) gefällt mir hingegen sehr gut :D Danke für den Tipp, gibt beim kompilieren zumindest keinen Fehler mehr aus. Danke!

_________________
Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?