2010-06-24 5 views
0

Salut j'ai un problème, je tente de faire le suivi, la classe A dépend de la classe B et vice-versa, comme ceami de classe avant la déclaration

class A; 

class B{ 
    A foo; 
    friend B A::doSomething(); 

}; 

class A { 
    B bar; 
    B doSomething; 
}; 

Le declartion ami ne fonctionne pas parce que A est une declartion incomplète . y-a-t-il un moyen d'éviter ça? (Ordre de déclaration classes Swapp est pas une solution que je ne voulais pas construire un exemple plus complexe où swapping ne fonctionne plus)

+1

* Est-il possible d'éviter cela? * Évitez d'abord la dépendance cyclique. Le reste tombera par lui-même. Qu'est-ce que vous devez résoudre pour lequel vous pensez avoir besoin de cette dépendance? –

Répondre

6

Qu'est-ce que vous essayez de faire droit serait maintenant faire vos classes infiniment grand(comme Je comprends, bar et foo sont des variables de classe, donc cela signifie que B comprend A, qui comprend B, ...).

Vous pouvez utiliser des pointeurs et stocker A* foo ou B* bar dans l'une de vos classes ou d'une certaine manière refonte votre application pour éviter cette dépendance circulaire.

0

Nest les deux classes. Cela donne des règles beaucoup plus favorables sur où et quand vous pouvez déclarer et définir quoi.

En outre, je soupçonne que votre conception peut juste être borked. Vous voudrez peut-être afficher les entrailles réelles de A et B afin que nous puissions donner plus de conseils.

Questions connexes