![]() |
Zirkuläre Referenz von zwei Klassen vermeiden
Also cih hab zwei klassen, und jede braucht die andere für sich selbst:
Klasse 1:
Delphi-Quellcode:
Klasse 2:
type
TKKPlayer = class private FName: string; FColor: TColor; FID: integer; FScore: integer; FHandleList: array of TIDShape; FHeartBeat: TTimer; FAI: boolean; procedure OnHeartBeat(Sender: TObject); public constructor Create(name: string; Color: TColor; ID: integer; AI: boolean); property PlayerName: string read FName write FName; property PlayerColor: TColor read FColor write FColor; Property PlayerID: integer read FID write FID; property PlayerScore: integer read FScore write FScore; property Heartbeat: TTimer read FHeartbeat write FHeartbeat; property AI: boolean read FAI write FAI; procedure AddToHandle(a:TIDShape); end;
Delphi-Quellcode:
type
TIDShape = class(TShape) private FYID: integer; FXID: integer; FOwned: boolean; FOwnedBy: TKKPlayer; FValue: integer; public property YID: integer read FYID write FYID; property XID: integer read FXID write FXID; property Owned: boolean read FOwned write FOwned; property OwnedBy: TKKPlayer read FOwnedby write FOwnedBy; property Value: integer read FValue write FValue; end; Ich hab nur leider keine ahnung wie ich es so arangieren kann, dass ich es nciht zirkulär aufbaue... hat jemand ne ahnung wie ich das machen kann? |
Re: Zirkuläre Referenz von zwei Klassen vermeiden
Versuch es einmal hiermit:
Delphi-Quellcode:
Den Rest findest Du in der Delphi-Hilfe, da solltest Du unbedingt einmal reinschauen. :wink:
TIDShape = class;
|
Re: Zirkuläre Referenz von zwei Klassen vermeiden
Liegen die Klassen in der gleichen Unit?
Wenn ja, geht das so:
Delphi-Quellcode:
TClass1 = class;
TClass2 = class protected class1: TClass1; end; TClass1 = class protected class2: TClass2; end; |
Re: Zirkuläre Referenz von zwei Klassen vermeiden
Wenn ich einfach
Delphi-Quellcode:
diesen teil vor meine code setze, dann sagt er
type TIDShape = class;
[Fehler] KKObjects.pas(8): E2086 Typ 'TIDShape' ist nicht vollständig definiert |
Re: Zirkuläre Referenz von zwei Klassen vermeiden
Zeig mal deine Deklaration
|
Re: Zirkuläre Referenz von zwei Klassen vermeiden
Hier:
Delphi-Quellcode:
type TIDShape = class;
type TKKPlayer = class private FName: string; FColor: TColor; FID: integer; FScore: integer; FHandleList: array of TIDShape; FHeartBeat: TTimer; FAI: boolean; procedure OnHeartBeat(Sender: TObject); public constructor Create(name: string; Color: TColor; ID: integer; AI: boolean); property PlayerName: string read FName write FName; property PlayerColor: TColor read FColor write FColor; Property PlayerID: integer read FID write FID; property PlayerScore: integer read FScore write FScore; property Heartbeat: TTimer read FHeartbeat write FHeartbeat; property AI: boolean read FAI write FAI; procedure AddToHandle(a:TIDShape); end; type TIDShape = class(TShape) private FYID: integer; FXID: integer; FOwned: boolean; FOwnedBy: TKKPlayer; FValue: integer; public property YID: integer read FYID write FYID; property XID: integer read FXID write FXID; property Owned: boolean read FOwned write FOwned; property OwnedBy: TKKPlayer read FOwnedby write FOwnedBy; property Value: integer read FValue write FValue; end; |
Re: Zirkuläre Referenz von zwei Klassen vermeiden
Lass mal die ganzen überflüssigen Types weg:
type
Delphi-Quellcode:
TIDShape = class;
TKKPlayer = class ... end; TIDShape = class(TShape) ... |
Re: Zirkuläre Referenz von zwei Klassen vermeiden
hui warum sind die überflüssig?
geht nciht deklaration erwartet... |
Re: Zirkuläre Referenz von zwei Klassen vermeiden
Weil sich das type anders wie typedef in C in Delphi auf den Abschnitt und nicht auf die folgende Deklaration bezieht
|
Re: Zirkuläre Referenz von zwei Klassen vermeiden
alle "type"s bis auf das erste bitte ersatzlos streichen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
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