mondrone
Messages postés246Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention11 mars 2012
-
15 févr. 2012 à 23:38
cptpingu
Messages postés3840Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention23 août 2024
-
16 févr. 2012 à 18:05
Bonsoir,
voilà mon problème :
je tente de faire une class, contenant un std::list, mais cette classe elle même est en template.
Pour certaines raisons, j'ai besoin d'itérer ma liste dans une des méthodes, mais je ne parviens pas à faire accepter par g++ le template de l'itérateur :
cptpingu
Messages postés3840Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention23 août 2024126 16 févr. 2012 à 18:05
Bonjour.
En fait, le type std::list<T>::iterator peut correspondre soit:
- À un type
- À un attribut static
Le compilateur ne peux pas le savoir à l'avance. Il va considérer qu'il y a ambiguïté, et fera comme si iterator était un attribut statique.
Or c'est ici un type. Il faut alors lui dire: "hey, c'est un type pas un attribut".
Le mot clé pour réaliser ceci est "typename".
A noter que std::list est un type construit, et que le compilateur peut "voir" ce qui est statique ou non. Le mot clé typename n'est à utiliser que pour spécifier des éléments d'un type "incomplet".
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question