Composant : référence circulaire AIE !!!

Signaler
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010
-
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010
-
Bonjour j'aimerais savoir si quelqu'un a une idée pour le problème suivant : J'ai créé deux classes qui ont besoin l'une de l'autre tel que :

TClass2 = class;
TClass1 = class(TMaClassParent1)
private
FChamp1 : integer;
FChamp2 : string;
FMaClass2 : TClass2;
public
constructor Create;
property Champ1 : integer read FChamp1 write FChamp1;
property Champ2 : string read FChamp2 write FChamp2;
property MaClass2 : TClass2 read FMaClass2 write FMaClass2;
end;

TClass2 = class(TMaClassParent2)
private
FChamp3 = boolean;
FMaClass1 : TClass1;
public
property Champ3 : boolean read FChamp3 write FChamp3;
property MaClass1 : TClass1 read FMaClass1 write FMaClass1;
end;

Jusque la pas de problème, le soucis viens lorsque je veux mettre une class par unité, du coup je suis obligé de mettre les uses respectif dans l'interface et bien evidemment j'ai un message "référence circulaire" !!!!

Existe-t-il un moyen de déclarer mes classes dans des unités différentes sans le pb de référence circulaire ?

Merci.

3 réponses

Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Generalement tu as 2 "uses". Un tout en haut de ton unité et un autre en dessous de implementation.

Declare en haut et l'autre sous implementation.
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
Il y a un oeuf dans la poule, mais la poule est elle-même dans l'oeuf !..... Sacré omelette !

Ken@vo

<hr size="2" width="100%">Code, Code, Codec !

[%3C/body ]
Messages postés
55
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
10 juin 2010

Le problème, c'est que mes deux classes sont dans l'interface afin d'être partagées, donc je suis obligé de mettre les uses dans l'interface, j'ai essayé de mettre un des uses dans l'implémentation mais le compilateur indique qu'il ne connait pas la classe !