erreur itérateur - C++ - Programmation
Marsh Posté le 11-12-2005 à 18:23:46
Code :
|
Part de ce code minimal, et étoffe ton code, tu verras apparaitre l'erreur plus facilement.
Marsh Posté le 11-12-2005 à 18:29:01
c'est bon j'ai vu d'ou venait l'erreur
c'est parce que dans un autre bloc (dans un for) je définis un int i :
Code :
|
Marsh Posté le 11-12-2005 à 18:36:42
en plus c'est ce que je pensais. C'est un bug bien connu de ton compilo qui se vautre sur la portée des variables de boucle.
Marsh Posté le 19-12-2005 à 17:54:23
yep et ton compilo est donc Visual C++
Sinon petites remarques en passant :
-> n'utilise jamais 'i' comme nom de variable pour un itérateur, utilise plutot 'it' ou un nom plus explicite. (c'est pour la lecture du code)
-> utilise des const_iterator plutot que des iterators lorsque tu parcours un liste/map/vector/set sans modifier les éléments (plus rapide et évite de modifier un élément par mégarde, c'est valable pour tout 'const' d'ailleurs)
-> utilise la préincrémentation (++it) plutot que la post inc (it++), c'est une bonne habitude et tu gagneras qq cycles (sur les objets, tels que les itérateurs tu gagnes une allocation et parfois un appel de fonction si l'opérateur n'est pas inline)
En utilisant toutes ses suggestions voici ton code :
Code :
|
Marsh Posté le 19-12-2005 à 17:57:15
pour le compilo en question, s'il s'agit de Visual C++ .NET (7.0) ou .NET 2003 (7.1), alors ce problème de compatibilité peut être résolu via une option à passer au compilateur (regarde dans la configuration de ton projet)
Marsh Posté le 11-12-2005 à 17:53:06
Salut à tous, j'utilise un itérateur sur un vector mais j'ai une erreur, voici mon code :
*iterListFich est un typedef défini comme ceci dans une classe que j'utilise :
et l'erreur qu'il me met (sous visual studio) :
error C2040: 'i' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *' differs in levels of indirection from 'int'
Il me dit que cette erreur vient de la ligne du for (for (iterListFich i = laListe.begin(); i != laListe.end(); i++))
Voila si quelqu'un peut m'aider ce serait bien sympa parce que moi je suis un peu perdu....