Template, petit bout de code qui ne fonctionne pas [C++/gcc 3.2.3] - C++ - Programmation
Marsh Posté le 08-11-2003 à 11:45:47
template< class T >
void afficheVector<T>(const vector<T> &vec) {
Marsh Posté le 08-11-2003 à 11:50:11
Je n'avais jamais vu cette syntaxe, mais ca passe pas non plus, toujours les mêmes erreurs.
Marsh Posté le 08-11-2003 à 11:51:40
rah chui con
dis donc
>afficheVector(v) ;
skoi de ca ?
afficheVector<int>(v) ;
Marsh Posté le 08-11-2003 à 11:55:17
Ca fonctionne pas
Toujours cette erreur de syntaxe à la ligne 9 avec une autre à la ligne 8 :
|
Et puis ca me semble bizarre de devoir spécifier le type à l'appel dans un cas aussi simple, ou il n'y a pas d'ambiguité, non ?
Marsh Posté le 08-11-2003 à 11:57:28
ben ecoute je viens d'essayer ca compile sous VC++
(copier coller de ton code)
donc je sais pas
Marsh Posté le 08-11-2003 à 12:00:52
|
Ca viendrait du compilateur à priori alors ? Une syntaxe particulière ou un truc comme çà. Je vais chercher dans cette direction !
Merci de ton intervention !
Si qqun d'autre à des propositions, pas de soucis
@+
Marsh Posté le 08-11-2003 à 12:44:49
Mon code initial compile sans warnings avec gcc/++ 2.96. Je pense que ca provient d'un problème d'include. J'ai reesayé de compiler mon code avec #include <iterator> mais ca fonctionne pas
Marsh Posté le 08-11-2003 à 13:30:07
essaye avec
Code :
|
Marsh Posté le 08-11-2003 à 15:56:20
Code :
|
Résultat de la compilation :
|
Still the same :|
Marsh Posté le 08-11-2003 à 22:58:33
Evadream -jbd- a écrit :
|
la règle: quand on fait référence à un type contenu dans une classe template, il faut toujours mettre typename devant:
Code :
|
(le compilo ne peut pas savoir que const_iterator est bien un type et pas autre chose)
Marsh Posté le 08-11-2003 à 23:53:36
Whouaou ! C'est exactement çà ! Un grand merci pour l'explication en plus de la solution !
@+
Marsh Posté le 08-11-2003 à 11:43:27
Hello,
Au risque de m'afficher, ca doit être qqchose aussi gros que moi, le code suivant ne compile pas :
Voici les erreurs :
$ make
g++ -c main.cpp -Wall -pedantic
main.cpp: In function `void afficheVector(const std::vector<T,
std::allocator<_CharT> >& )':
main.cpp:9: syntax error before `;' token
main.cpp: In function `void afficheVector(const std::vector<T,
std::allocator<_CharT> >& ) [with T = int]':
main.cpp:24: instantiated from here
main.cpp:11: `iter' undeclared (first use this function)
main.cpp:11: (Each undeclared identifier is reported only once for each
function it appears in.)
make: *** [main.o] Error 1
$
Erreur de syntaxe ? Je vois vraiment pas, ou ca fait trop longtemps que je suis devant mon écran.
Par contre, tout passe bien lorsque la ligne 9 devient :
Ce qui a relativement peu d'intérêt . Il y surement qqchose qui m'a échappé :|
Merci à vous !
Message édité par Evadream -jbd- le 08-11-2003 à 16:15:41