probleme template - C++ - Programmation
Marsh Posté le 10-04-2005 à 15:03:02
Je te dis juste pour visual studio :
Quand tu fais une class template ce dernier refuse le découpage fichier .h déclaration et .cpp définitions
Donc sous Visual Studio, tu dois crée ta class et tes focntions dns un .h unique (donc çà fait un gros fichier .h et c'est tout pas beau :S)
Marsh Posté le 10-04-2005 à 16:18:12
La syntaxe correcte est :
typename std::list<T>::iterator it = _liste.begin();
Marsh Posté le 10-04-2005 à 16:47:14
C'est ce que j'allais dire (ouais, on dit toujours ça ). J'ai l'impression que manutudescend a coupé le message d'erreur de gcc qui indiquait qu'il fallait utiliser le mot-clé typename. Comme on l'a vu récemment là:
http://forum.hardware.fr/forum2.ph [...] 1#t1037810
Marsh Posté le 10-04-2005 à 16:48:07
Tarabiscote a écrit : La syntaxe correcte est : |
bien vu
Sinon tu peux metter après tes includes
Code :
|
Cela évite de taper "std::" avant chaque occurence de list
Mais dans ces cas là tu t'interdit de définir quoi que ce soit (objet ou variable) de non list
Marsh Posté le 10-04-2005 à 16:53:06
Personnellement, je conseil pas trop d'utiliser using dans un fichier d'en-tête.
(ca peut poser problème si ce fichier est inclu un peu partout)
Marsh Posté le 10-04-2005 à 17:53:47
j'ai mis dans le .h using std::list ;
et le message d'erreur n'est pas coupé.
je vais essayer typename stf::list...... mais je doute que ca vienne de la. je vous tiens au courant
merci
Marsh Posté le 10-04-2005 à 18:04:05
vous etes sur pour le 'typename' ? Le compilateur connait std::list et sais que iterator est un type membre ?
ne mets pas de using dans un entete, et tu es sur d'avoir inclus <list> ?
Marsh Posté le 10-04-2005 à 18:54:05
merci j'ai utilisé la syntaxe
typename std::list<T>::iterator it = _liste.begin();
et ca marche
merci pour votre aide a tous .
Marsh Posté le 10-04-2005 à 14:57:16
bonjour,
je debute en c++ et j'ai un petit probleme avec la compilation des templates ( j'utilise dev C++, donc compilateur gcc si je ne me trompe)
j'ai voulu tester de faire un "extends" de la classe list fournie. mais il me fait un probleme au niveau des iterators.
ListeObjets.cpp In member function `T* ListeObjets<T>::getObjet(int)':
17 ListeObjets.cpp expected `;' before "it"
18 ListeObjets.cpp `it' undeclared (first use this function)
......
plus precisément voici le code qui pose probleme (le .cpp)
est ce que j'ai un probleme dans mon code ou est ce que c'est le compilateur gcc qui gere pas les templates ?
Merci d'avance