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++ :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
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.