[C++] Classe et Template

Fermé
Caligone - Modifié par Caligone le 8/05/2011 à 09:58
Bonjour,
Je suis actuellement étudiant en informatique et je dois implémenter une liste chainée générique acceptant le polymorphisme.

La consigne est donc de créer :
- une classe Cellule représentant un élément de la liste chainée (un contenu et une pointeur vers la cellule suivante),
- une classe ListeChainee pour représenter la liste chaînée elle-même.


Lors de ma compilation, j'ai plusieurs erreurs venant, il me semble, du même problème.
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\listeChainee.cpp||In member function 'bool ListeChainee<Type>::ajouterEltDebut(Type) [with Type = int]':| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\main.cpp|11|instantiated from here| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\listeChainee.cpp|30|error: no matching function for call to 'Cellule<int>::Cellule()'| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\cellule.cpp|8|note: candidates are: Cellule<Type>::Cellule(Type) [with Type = int]| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\cellule.h|6|note:                 Cellule<int>::Cellule(const Cellule<int>&)| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\listeChainee.cpp||In member function 'bool ListeChainee<Type>::ajouterEltI(Type, int) [with Type = int]':| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\main.cpp|12|instantiated from here| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\listeChainee.cpp|64|error: no matching function for call to 'Cellule<int>::Cellule()'| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\cellule.cpp|8|note: candidates are: Cellule<Type>::Cellule(Type) [with Type = int]| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\cellule.h|6|note:                 Cellule<int>::Cellule(const Cellule<int>&)| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\listeChainee.cpp||In member function 'bool ListeChainee<Type>::ajouterEltFin(Type) [with Type = int]':| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\main.cpp|13|instantiated from here| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\listeChainee.cpp|43|error: no matching function for call to 'Cellule<int>::Cellule()'| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\cellule.cpp|8|note: candidates are: Cellule<Type>::Cellule(Type) [with Type = int]| 
C:\Users\Calimero\Documents\Cours\C++\TP 4\Exo 3.2\cellule.h|6|note:                 Cellule<int>::Cellule(const Cellule<int>&)| 
||=== Build finished: 3 errors, 0 warnings ===|


D'après moi, cela vient du fait que je chercher a faire une allocation dynamique d'une cellule sans contenu. Il faudrait donc avoir un constructeur pour la classe Cellule ne prenant aucun paramètres en entrée, mais dans ce cas, comment renvoyer l'adresse de cette cellule?

Et si l'un d'entre vous pouvait m'expliquer les lignes a rajouter pour le polymorphisme, je lui en serais gré.

Voici mes différents fichiers :
http://pastebin.com/LppSrTFy : main.cpp
http://pastebin.com/1KxkeHE0 : cellule.h
http://pastebin.com/uZKJ3Jqw : listeChainee.h
http://pastebin.com/TjEnMJZm : cellule.cpp
http://pastebin.com/GxdiAwVy : listeChainee.cpp

PS : Mes méthodes de la classe ListeChainee ne sont pas toute implémenter car cette erreur me perturbe et je souhaiterai la réglé avant de passer au reste.

Merci pour votre aide
Cordialement

Caligone