Bonjour,
j'ai un soucis avec une méthode dans mon petit projet, lequel consiste à concevoir un arbre générique. J'ai fouillé sur le forum ainsi que dans la FAQ, mais je n'ai malheureusement pas trouvé de réponse à mon problème qui est, j'en suis certain, vraiment anodin...alors voici le bout de code qui me cause ennui:

j'ai un fichier .h dans lequel se situe la classe Arbre:

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
/**
 * \file BST.h
 * \brief Classe définissant un arbre 
 * \author Bert
 * \version 0.1
 * \date juillet 2010
 *
 * Definition de la classe Arbre et de ses méthodes de parcours 
 *
 */
 
#ifndef _BST
#define _BST
 
#pragma warning( disable : 4290 )
#include <stdexcept>
 
#include <iostream>
#include <vector>
#include <queue>
 
namespace Arbre_Lab8
{
 
    /** 
    * \class Arbre
    *
    * \brief classe générique représentant un arbre
    *
    *  La classe gère un arbre générique. L'implémentation
    *  se fait par chaînage.
    */ 
    template <typename E>
    class Arbre
    {
    public:
 
   ... (je ne mets pas toutes les méthodes, elles ne sont pas problématiques)
 
        private:
        /** 
        * \class Noeud
        *
        * \brief classe interne représentant un noeud typique de l'arbre
        *
        *  La classe représente un noeud typique
        *  pour implémenter un arbre par chaînage.
        */
        class Noeud
        {
          public:
            E data;            /*!< La donnée dans l'arbre*/
            Noeud *gauche;    /*!< Pointeur vers le fils gauche*/
            Noeud *droite;    /*!< Pointeur vers le fils droit*/
            /**                       
             * \brief Constructeur de la classe Noeud
             *
             * \post un noeud typique est intialisé
             * 
             */
            Noeud( const E&d ): gauche( 0 ), data( d ), droite( 0 ) { }
        };
 
        // Les membres données
        Noeud * racine;    /*!< La racine de l'arbre*/
 
        ... (même chose ici, il y a d'autre méthodes privées non-problématiques)
 
        /**                       
         *  \brief Construction d'un arbre à partir des tableaux de 2 visites (père et symétrique)
         *
         * Fonction récursive auxiliaire pour le constructeur #2
         * 
         *  \pre Il faut qu'il y ait suffisamment de mémoire
         *
         *  \post Le sous-arbre construit est retourné
         *
         *  \exception bad_alloc s'il n'y a pas assez de mémoire
         */
        Noeud * _auxPereSym(E *tabS, int debut, int fin, E **ptr, int &card) throw(std::bad_alloc);
 
    };
}//Fin du namespace
 
#include "BST.inl"
 
#endif
Et j'ai un fichier .inl qui contient les définitions des méthodes:

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
/**
 * \file BST.inl
 * \brief Le code des opérateurs
 * \author Bert
 * \version 0.1
 * \date juillet 2010
 *
 * Implémentation des méthodes de parcours d'un arbre générique  
 *
 */
 
namespace Arbre_Lab8
{
     ... (autres méthodes non-problématiques)
 
	/**
         * \fn Arbre<E>::Noeud * Arbre<E>::_auxPereSym(E * tab, int debut,  int fin, E ** ptr, int &card) throw (std::bad_alloc)
         *
         * \param[in] tabS Le tableau contenant le fruit de la visite symétrique
         * \param[in] debut L'indice de début de tabS
         * \param[in] fin L'indice de fin de tabS
         * \param[in] ptr Le tableau contenant le fruit de la visite au père
         * \param[in] card La cardinalité de tabP
         * 
         */
	template <typename E>
	Arbre<E>::Noeud * Arbre<E>::_auxPereSym(E * tab, int debut, int fin, E ** ptr, int &card) throw (std::bad_alloc) //<<<<<l'erreur est à cette ligne
	{
		Noeud * unNoeud; // ceci est uniquement pour que ça compile...
 
		return unNoeud;
	}
 
 
}//Fin du namespace
Alors, à la compilation (avec Visual studio 8) j'ai le message d'erreur suivant:

error C2143: erreur de syntaxe*: absence de ';' avant '*'

???
Je n'y comprends rien, quelqu'un a une idée svp?

merci d'avance !