Listes template : Problème - C++ - Programmation
Marsh Posté le 01-02-2005 à 18:01:09
hum, y a pas mal d'erreurs ...
la syntaxe de la déclaration d'une fonction membre, c'est plutot ça :
Code :
|
en supposant que tu ai besoin de friend ... je pense que tu veux plutot faire ça :
Code :
|
De plus, empty doit probablement etre const. Le destructeur virtuel, mmouais.
Marsh Posté le 01-02-2005 à 18:56:04
J'ai résolu le problème en mettant la structure Element au sein même de la classe List.
empty n'est pas const, puique par nature, il vide la liste... Le destructeur en tant que membre virtuel n'est-il pas invariable?
Marsh Posté le 01-02-2005 à 19:16:28
maximew a écrit : J'ai résolu le problème en mettant la structure Element au sein même de la classe List. |
un destructeur virtuel, c'est pour une classe [EDIT] d'interface [\EDIT]. C'est pas ton cas.
clear() me parait plus parlant que empty() quand meme.
Marsh Posté le 01-02-2005 à 20:40:06
Ok, bien compris... J'avais pourtant l'habitude de mettre systèmatiquement le destructeur en virtuel afin de ne pas avoir de problème en cas de dérivation et transtypages multiples, d'autant plus que j'ai lu ceci dans certains livres... Faudrait que je me penche la dessus...
Merci pour ton aide!
Marsh Posté le 01-02-2005 à 20:42:44
++fab a écrit : un destructeur virtuel, c'est pour une classe [EDIT] d'interface [\EDIT]. C'est pas ton cas. |
N'importe quoi. Dès qu'une classe s'inscrit dans une relation d'héritage -> destructeur virtuel. .|
Marsh Posté le 01-02-2005 à 21:42:29
est ce que le fait de ne pas fournir un destructeur virtuel dans une classe (qui n'hérite de rien), revient à interdire d'en hériter ?
pour éviter les fuites, ça parait obligé
Taz> OK
Marsh Posté le 01-02-2005 à 22:47:52
en langage fonctionel, j'en suis encore à balbutier mon E-Lisp Apres, j'ai prévu de suivre la migration des GNU vers Scheme. Apres ce périple, pourquoi pas
Marsh Posté le 01-02-2005 à 17:05:12
Bonjour,
Je cherche à implémenter une Liste patron (dans un but didactique, sinon, j'aurais pris la STL) afin qu'elle soit la plus réutilisable possible.
Cependant, j'ai un petit problème. Tout d'abord la déclaration de la classe (ce n'est encore qu'une ébauche) :
et le code incriminé:
Dans ma fonction main, j'essaye d'instancier une liste de int, mais à chaque fois que je déclare une struct Element<T>* e, C++ Builder 4 me renvoie l'erreur : "La spécialisation explicite de Element<int> nécessite une déclaration template<>".
Si quelqu'un pouvait m'aider, ce serait vraiment sympa, parce que là, les templates, c'est la première fois que j'en utilise vraiment et je ne vois pas trop ce que signifie cette erreur... Merci!
Message édité par maximew le 01-02-2005 à 17:12:05
---------------
Mon Flickr