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.
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 : Sélectionner tout - Visualiser dans une fenêtre à part class B;
Et là, si tu faisdans la classe B, tu auras une erreur "use of undefined type" (ou incomplete type) mais si tu fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part A objA;ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part A *pt_a;normalement tu n'auras pas de problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager