[C++]Héritage de templates, g++ aime pas :(

Héritage de templates, g++ aime pas :( [C++] - C++ - Programmation

Marsh Posté le 17-06-2005 à 00:59:52    

Salut a tous.
J'essaye desesperement d'hériter d'un template pour faire un autre template, mais la mayonnaise ne prend pas. Toutes les reférences à la classe mère sont notifiées inconues! :(
 
Apres recherche sur google et le forum, tout ce que j'ai trouvé à faire, c'est remplacer <class T> par <typename T>...  
 
Un ptit bout de code vaut mieux qu'un long discours alors voila, je m'en remet à votre grande expérience de la prise de tete 1 semaine avant la date limite!! :whistle:  
 

Code :
  1. template<typename T>
  2. class element
  3. {
  4. public:
  5. T val;
  6. element<T> *suc;
  7. element(const T &x, element<T> *l)
  8. };


Code :
  1. template<typename T>
  2. class Gliste
  3. {
  4.     protected:
  5.         element<T> * debut;
  6.     public:
  7.         Gliste();
  8. };


Jusque la tout va bien.

Code :
  1. template<typename T>
  2. class listeinter:public Gliste<T>
  3. {
  4.       public:
  5. listeinter();
  6. double Taille();
  7. bool Appartient(const T & x);
  8. };
  9. template<typename T>
  10. double TailleEl(element<T> *p)
  11. {
  12.    if (p==NULL) return 0;
  13.    else return Taille(p->suc)+1;       
  14. }
  15. template<typename T>
  16. listeinter<T>::listeinter()
  17. {
  18. Gliste<T>::Gliste();
  19. }
  20. template<typename T>
  21. double listeinter<T>::Taille()
  22. {
  23.    return TailleEl(debut);
  24. }


Et donc tout ce que je fait dans ma classe listeinter ca foire... :sweat:
Il ne reconnait ni le constructeur Gliste() ni la propriété debut.  
 
J'ai déja allumé un cierge mais si quelqu'un avait un miracle en stock, je suis preneur.
 
Ah oui, je compile sous Linux mais ca marchait sous DevCpp... :pt1cable:  
 
Merci

Reply

Marsh Posté le 17-06-2005 à 00:59:52   

Reply

Marsh Posté le 17-06-2005 à 07:53:29    

1) il manque des ; et NULL n'est pas défini
2) il faut utiliser this-> sinon la recherche de nom échoue. this->début
3) listeinter<T>::listeinter() : on est pas en java ou autre, c'est pas comme ça qu'on appelle le constructeur de la classe parente
4) utilise un size_t pour tes fonctions membres taille()

Reply

Marsh Posté le 17-06-2005 à 20:00:20    

Merci pour cette leçon de programmation! :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed