Autor Beitrag
Basti1991
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 29.04.10 15:36 
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:

ausblenden 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; //<-- Undefinierter Bezeichner TZustand
  end;

  TZustand = class
     FId: Integer;
     Aktionen: Array of TZustandAktion; // wenn ich TZustand vor TZustandAktion definiere taucht logischerweise das Problem dann hier auf ;)
     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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Do 29.04.10 16:03 
Füge mal diese Zeile ein, dann geht es.
ausblenden 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; //<-- Undefinierter Bezeichner TZustand
  end;

  TZustand = class
     FId: Integer;
     Aktionen: Array of TZustandAktion; // wenn ich TZustand vor TZustandAktion definiere taucht logischerweise das Problem dann hier auf ;)
     public
        property Id: Integer read FId;
        procedure AktionHinzufuegen(Lesen, Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand);
  end;
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Do 29.04.10 16:04 
Erkläre dem Kompiler, was er noch nicht wissen kann :
ausblenden 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; //<-- Undefinierter Bezeichner TZustand
  end;

  TZustand = class
     FId: Integer;
     Aktionen: Array of TZustandAktion; // wenn ich TZustand vor TZustandAktion definiere taucht logischerweise das Problem dann hier auf ;)
     public
        property Id: Integer read FId;
        procedure AktionHinzufuegen(Lesen, Schreiben: TColor; Bewegen: TRichtung; NeuerZustand: TZustand);
  end;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 29.04.10 16:04 
Moin und :welcome: im Forum!

user profile iconBasti1991 hat folgendes geschrieben Zum zitierten Posting springen:
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 Suche in: Delphi-Forum, Delphi-Library FORWARD DEKLARATION, damit solltest du weiter kommen. :lupe: :les: :think: ;)

cu
Narses

//EDIT: OK, zu langsam... :( ;)

_________________
There are 10 types of people - those who understand binary and those who don´t.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: 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

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Basti1991 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 29.04.10 16:21 
Vielen, vielen Dank an alle =)
Hat wunderbar geklappt :)