template -> petit problème !
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:
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:
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 !