Pb avec Template

cs_Diabolus Messages postés 61 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 28 septembre 2007 - 31 janv. 2004 à 12:39
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 1 févr. 2004 à 17:17
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 janv. 2004 à 21:01
c'est normal: tu dois écrire l'implémentation dans le fichier .h aussi
0
cs_Diabolus Messages postés 61 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 28 septembre 2007 1
31 janv. 2004 à 21:16
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.
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
1 févr. 2004 à 17:17
Comme te le dis vecchio56, on déclare obligatoirement l'implémentation d'une classe template dans le header.

Kaid - kaid.fr.st
0
Rejoignez-nous