Bonjour,
Il est rare que je commence de nouveau topic, mais là, je n'en peux plus, il faut que l'on m'explique.
Je souhaite crée un iterator, pour faire un parcours de mon containeur ( vector ou map , j'ai le problème pour les deux ).
Des fois, j'y arrive, des fois non. Pourtant je fais toujours la même chose. J'ai quelques idées du pourquoi ça coince, mais faut que quelqu'un m'explique.
Plus précisément, c'est une erreur avec g++.
Habituellement je fais:
Donc, pour ce qui suive encore :s, je veux un itérator sur mon vector, vector qui contient des pointeurs sur Node ( qui celui ci est un template ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for ( std::vector<Node<T>* >::iterator it_links = links.begin() ; it_links != links.end() ; ++it_links ) delete (*it_links);
Voici comment je déclare mon vector:
Pour avoir plus de précision, pour le morceau qui plante j'ai fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::vector<Node<T>*> links;
Donc on voit que j'ai juste mis la déclaration de mon pointeur une ligne plus haut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 std::vector<Node<T>* >::iterator it_links; for ( it_links = links.begin() ; it_links != links.end() ; ++it_links ) delete (*it_links);
g++, me renvoie pour la ligne de la déclaration:
( Bien sur , pour toute les références it_links suivantes il va dire qu'il ne trouve pas la déclaration ).error: expected `;' before ‘it_links’
Comme je fais ce morceau de code assez souvent, il semblerai que cela marche des fois.
Plus précisément, cela doit dépendre du type des éléments dont je construit mon itérateur.
J'ai l'impression, qu'il n'aime pas les pointeurs sur un template. Mais je voudrais savoir pourquoi et surtout corriger mon problème.
( En pièces jointes, je donne le code, que j'utilise pour cette exemple, et aussi le code du même problème sur une map ) ( Code qui est pour Linux ... mais certainement compatible windows ).
Merci pour toutes vos prochaines suggestions et réponses.
Partager