Bonjour tout le monde,
voici ce que je cherche à faire :
avoir 2 classes dans 2 unités différentes et chacune des classes ayant une référence du type de l'autre classe.
Exemple :
Et faire de même dans la déclaration de TMyObject2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 type TMyObject = class( TComponent ) private FMyObject2 : TMyObject2; end;
Bien entendu, on ne peut pas mettre dans les uses interface l'unité de l'autre classe, sinon on aurait des uses circulaires.
Je me suis dit, qu'une solution serait de mettre TMyObject2 dans le uses de MyObject puis faire une prédéclaration de TMyObject dans l'unité de TMyObject2.
Exemple :
Mais dans ce cas, j'ai le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 type TMyObject = classs; TMyObject2 = class( TComponent ) private FMyObject : TMyObject; end;
J'ai l'impression que je n'ai le droit de faire une prédéclaration que dans l'unité qui déclare la classe.Le type TMyObject n'est pas encore complètement défini.
Une solution serait de mettre les 2 classes dans la même unité, mais comme chaque classe est énorme (dépasse les milliers de ligne), je préfère les garder dans des unités séparées.
Pour l'instant, j'ai un objet qui est l'owner de l'autre, donc je passe par l'owner et je transtype, c'est pas très propre mais ça marche tant que je n'ai pas d'autre solution.
Est-ce que faire une prédéclaration est une bonne solution et il y a une astuce que j'ai zappé ou dois-je continuer à utiliser les owner car il n'y a pas d'autre solution ?
Partager