Pb avec Template

Signaler
Messages postés
61
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
28 septembre 2007
-
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
-
Salut à tous,
J'ai un problème avec les templates. Je veux faire une liste chainée qui fonctionne avec les templates.
Mon problème arrive au moment où je linke (la compilation marche très bien mais pas la construction du prog). Il me dit qu'il ne connait pas les méthodes que j'appelle avec un objet défini alors que les méthodes existent bien et que la déclaration de l'objet utilisant les templates me semble bon.

Voici une partie de mon code :

mon fichier h :
______________

template <typename T>
class ListeChainee{
private:
T *tete;

public:
ListeChainee();
T * getTete();
void setTete(T * Tete);

void affiche();

void chercherPositionOrdreAlpha ( char * nom );
void ajouter(T * tampon);
void supprimer(T * tampon);
T* acces( char * nom );

void desallouerListe(T *courant);
~ListeChainee();
};

voici un exemple de mon fichier cpp :
___________________________________

template <typename T> T* ListeChainee<T>::getTete(){
return tete;
}

template <typename T> void ListeChainee<T>::setTete(T *tete){
this->tete=tete;
}

template <typename T> void ListeChainee<T>::affiche(){
T * courant = tete;
while (courant!=NULL){
courant->affiche();
courant = courant->suivant;
}
}

et voici la déclaration d'un objet qui remplace l'objet T temporaire :

ListeChainee<Voiture> *listeVoiture;

et ensuite tous mes accès aux méthodes ne sont pas trouvés à la construction.

Merci de votre aide!

3 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
c'est normal: tu dois écrire l'implémentation dans le fichier .h aussi
Messages postés
61
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
28 septembre 2007
1
Merci de m'avoir répondu
en fait j'ai trouvé mon erreur, elle était dans le fichier cpp où j'ai fait une erreur de syntaxe que le compilo n'avait pas vu et ça retournait une erreur de link mais pas sur l'erreur.
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Comme te le dis vecchio56, on déclare obligatoirement l'implémentation d'une classe template dans le header.

Kaid - kaid.fr.st