Bonsoir � tous,
J'ai cr�� une classe template "arbre" qui contient deux attributs :
- T data
- std::vector<arbre*> fils
J'ai d�fini les m�thodes permettant l'�criture et la lecture premier attribut de type int ainsi que des �l�ments du deux�me attribut de type vector. Maintenant, je suis entrain de coder une fonction qui affiche le contenu des noeuds (la valeur de data) en largeur.
Voil� ce que j'ai �crit C++ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void arbre<T>::afficher()const
{
std::vector<arbre<T>*> q;
q.push_back(this);
arbre<T>* tete;
while(q.size()!=0)
{
std::cout<<q[0]->getData()<<"\t";
tete=q[0];
q.erase(q.begin());
for (int i=0; i<(tete->fils).size(); i++)
q.push_back(tete->getFils(i));
}
} |
J'utilise cette m�thode dans le main comme suit :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| int main(int argc, const char * argv[])
{
arbre<int>* racine=new arbre<int>(22);
racine->enfileFils(new arbre<int>(18)); // noeud 0
racine->enfileFils(new arbre<int>(23)); // noeud 1
// Fils du noeud 0
(racine->getFils(0))->enfileFils(new arbre<int>(4));
(racine->getFils(0))->enfileFils(new arbre<int>(9));
// Fils du noeud 1
(racine->getFils(1))->enfileFils(new arbre<int>(17)); // noeud 4
// Fils du noeud 4
((racine->getFils(1))->getFils(0))->enfileFils(new arbre<int>(15));
racine->affiche();
return 0;
} |
Xcode pointe alors une erreur sur la ligne 4 (du premier bloc de code) et me dit :
"Reference to type 'const value_type' (aka 'arbre<int> *const') could not bind to an revalue of type 'const arbre<int> *'".
Cela me parait bizarre car this a bien le type arbre<T>* que je d�clare pour q .
Si vous pouvez m'�clairer l� dessus, ce serait super !
Bien � vous.
Partager