Bonjour,
J'ai deux header files (A.h et B.h) qui s'incluent mutuellement.
Cependant, dans A.h, si j'utilise un objet de type B, alors le compilateur m'indique qu'il ne connait pas B.
Merci d'avance.
Version imprimable
Bonjour,
J'ai deux header files (A.h et B.h) qui s'incluent mutuellement.
Cependant, dans A.h, si j'utilise un objet de type B, alors le compilateur m'indique qu'il ne connait pas B.
Merci d'avance.
Ben comme tu ne peux pas faire de types imbriqués l'un dans l'autre (ce serait électroniquement impossible), tu es obligé de passer par des pointeurs.
Donc, tu passes par des prototypes de classe:
dans A.h (où est définie la classe A), tu déclares juste la classe B sans la définir:et dans B.h (où est définie B), tu déclares la classe A.Code:class B;
Et là, si tu faisdans la classe B, tu auras une erreur "use of undefined type" (ou incomplete type) mais si tu faisCode:A objA;
ouCode:A *pt_a;
normalement tu n'auras pas de problème.Code:A& refA;
Merci ca répond à mon problème.
Mais pour information, maitenant si dans la classe B, je veux utiliser un objet A et non un pointeur. Comment faire ?
Merci.
Merci beaucoup,
Mais comme je disais, si mes méthodes utilisent des objets et non des pointeurs ou des références, comment faire ? (désolé mais je suis débutant, peut être que la réponse est évidente...).
Merci.
Un objet de la classe A qui contient un objet de la classe B qui contient à son tour un A qui contient un B qui contient un A qui contient un B qui ....
C'est de ça dont tu veux parler ?
Ben, tu peux toujours avoir la classe B qui contient un objet A, il te suffit alors d'inclure A.h avant (ou dans) B.h...
Par contre, tu ne pourras pas avoir d'objet B dans la classe A (une référence/pointeur, tu peux) sinon ça ferait un objet qui se contient lui-même...
ok merci.