Autor Beitrag
reQuiem
Hält's aus hier
Beiträge: 13

Ubuntu 8.04 Hardy, XP Pro (VM :P)
Turbo Delphi 2006, C++, C#, Java, Ruby, PHP, HTML, CSS, JS (Eclipse, Gedit)
BeitragVerfasst: Mi 27.08.08 19:24 
hi all,

ich versuche eine forward-declaration wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type TField = class; // hier kommt der unten genannte fehler

type
  TMap = class
     field : TField;
     ....
  end;

type
  TField = class
    ...
  end;


Jedoch bringt der Compiler hier den Fehler "[Pascal Error] mainform.pas(21): E2086 Type 'TField' is not yet completely defined"

weiß jemand wo der fehler liegt?

Gruß,
Niklas
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 27.08.08 19:31 
Du könntest stattdessen einen Zeiger verwenden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  pField = ^tField;
  TMap = class
     field : pField;
     ...
  end;

  TField = class
    ...
  end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 27.08.08 19:31 
Vielleicht solltest du nur einmal type verwenden:

ausblenden Delphi-Quelltext
 
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
{ ... }
type
  TField = class;

  TMap = class
     field : TField;
     ....
  end;

  TField = class
    ...
  end;

Sonst kann ich mir nicht erklären, wo der Fehler herkommt. :nixweiss:

user profile iconTilman hat folgendes geschrieben:
Du könntest stattdessen einen Zeiger verwenden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  pField = ^tField;
  TMap = class
     field : pField;
     ...
  end;

  TField = class
    ...
  end;

Eine Klasse ist schon ein Zeiger. Und eine Vorwärtsdeklaration wird dadurch nicht vermieden - TField taucht ebenfalls vor der Deklaration von TMap auf. :gruebel:
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 27.08.08 19:37 
Ja stimmt Yogu, so geht es. Ich kannte bisher nur die forward-deklaration von Zeigern, daher.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
reQuiem Threadstarter
Hält's aus hier
Beiträge: 13

Ubuntu 8.04 Hardy, XP Pro (VM :P)
Turbo Delphi 2006, C++, C#, Java, Ruby, PHP, HTML, CSS, JS (Eclipse, Gedit)
BeitragVerfasst: Mi 27.08.08 19:53 
danke an alle! problem gelöst!