J'essaie de mettre en œuvre une structure de type arbre avec deux classes: Voyons un exemple: P> nœud.h: strong> p> arborescence appelante: < / strong> p> Ceci est juste un exemple simple pour illustrer le problème. Donc, ce que je veux appeler une fonction de Mise à jour # 2: Strong> ci-dessous, après les astuces, j'ai également contemplé la solution complète. Merci, problème résolu. P> p> arborescence code> et
noeud code>. Le problème est que de chaque classe, je veux appeler une fonction de l'autre classe, de sorte que les déclarations avant simples ne suffisent pas.
arbores code> à partir d'un objet code> objet code>. P>
4 Réponses :
Dans les en-têtes, renvoyer les fonctions de membre:
#include "Tree.h" #include "Node.h" Node::Node(Tree * tree, int id) : tree_(tree), id_(id) { tree_->incCnt(); } Node::~Node() { tree_->decCnt(); } etc
Pouvez-vous, mais les corps constructeur / destructeur dans un fichier .cxx? Vous pouvez inclure arborescent. P>
La définition de Tout ce que vous avez à faire est supprimé la définition de toutes les fonctions nécessitant une définition complète de arborescence code> nécessite la définition de
noeud code> mais pas l'inverse de sorte que votre déclaration avant est correcte. P>
arborescence code> dans le nœud code> de la classe et les implémenter dans un
.CPP code> fichier dans lequel des définitions complètes des deux classes sont dans la portée. P>
Suivre les astuces, voici la solution complète.
arbre.h: strong> p> Nœud.cpp: strong> p>