Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - 2 Klassen die durch ein Objekt auf sich gegenseitig verweisn
Basti1991 - Do 29.04.10 15:36
Titel: 2 Klassen die durch ein Objekt auf sich gegenseitig verweisn
Hallo liebe Community,
ich habe folgendes Problem. Ich habe 2 Klassen, die ich nacheinander definiert habe. Jetzt hat Klasse 1 ein Objekt, dass auf Klasse 2 verweist und umgekehrt. Jetzt bekomme ich den Fehler, dass (das kommt bei Klasse 1) Klasse 2 undefiniert sei (weil ich sie ja erst dannach definieren kann). Auch die Reihenfolge zu ändern würde ja nichts bringen, da Klasse 2 ja ein Objekt der Klasse 1 besitzt...wie kann man das lösen?
Hier mal mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| TZustandAktion = class Lesen: TColor; Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand; end;
TZustand = class FId: Integer; Aktionen: Array of TZustandAktion; public property Id: Integer read FId; procedure AktionHinzufuegen(Lesen, Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand); end; |
Hab bislang leider nichts gefunden dazu :/
Vileicht hab icha uch falsch gesucht, ich habs mit stichwörtern wie Zirkelbezug probiert, wobei ich da großteils auf Excel Probleme bestoßen bin :D
Vielen Dank schonmal und viele Grüße,
Sebastian
SvenAbeln - Do 29.04.10 16:03
Füge mal diese Zeile ein, dann geht es.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| TZustand = class;
TZustandAktion = class Lesen: TColor; Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand; end;
TZustand = class FId: Integer; Aktionen: Array of TZustandAktion; public property Id: Integer read FId; procedure AktionHinzufuegen(Lesen, Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand); end; |
guinnes - Do 29.04.10 16:04
Erkläre dem Kompiler, was er noch nicht wissen kann :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| TZustand = class;
TZustandAktion = class Lesen: TColor; Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand; end;
TZustand = class FId: Integer; Aktionen: Array of TZustandAktion; public property Id: Integer read FId; procedure AktionHinzufuegen(Lesen, Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand); end; |
Narses - Do 29.04.10 16:04
Moin und :welcome: im Forum!
Basti1991 hat folgendes geschrieben : |
Jetzt hat Klasse 1 ein Objekt, dass auf Klasse 2 verweist und umgekehrt.
[...]
wie kann man das lösen?
[...]
Vileicht hab icha uch falsch gesucht, ich habs mit stichwörtern wie Zirkelbezug probiert, wobei ich da großteils auf Excel Probleme bestoßen bin :D |
Such mal nach
FORWARD DEKLARATION, damit solltest du weiter kommen. :lupe: :les: :think: ;)
cu
Narses
//EDIT: OK, zu langsam... :( ;)
Xion - Do 29.04.10 16:05
Eben mal in der Suche (F1) gestöbert.
Da steht:
| F1 hat folgendes geschrieben: |
| Mit einer forward-Deklaration kann der Gültigkeitsbereich eines Prozedur- oder Funktionsbezeichners auf einen früheren Punkt im Quelltext ausgedehnt werden. Andere Prozeduren und Funktionen können also die mit forward deklarierte Routine aufrufen, bevor sie tatsächlich definiert wurde. forward-Deklarationen bieten also nicht nur mehr Flexibilität bei der Programmierung, sie werden auch gelegentlich für Rekursionen benötigt. |
Ob das auch mit Typen geht...gute Frage
Basti1991 - Do 29.04.10 16:21
Vielen, vielen Dank an alle =)
Hat wunderbar geklappt :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!