luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
15 mai 2005 à 18:36
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
15 mai 2005 à 20:02
Bonjour, bon j'ai un petit soucis avec les iterator.
C'est simple, j'ai une classe var_test et une classe sub_var qui dérive
de var_test. Elles redéfinissent toutes les deux une fonction void
eval();
var_test t1(4); // donc je définie deux objets
sub_test t2(2);
std::list < var_test*> liste;
liste.push_back(&t1);
liste.push_back(&t2);
std::list< var_test* >::const_iterator it;
it = liste.begin();
(*it)->eval();
it = liste.end();
(*it)->eval(); // <== PLANTE !
liste.back()->eval();
liste.front()->eval(); // <== AUCUN problème et pourtant a priori c'est le meme objet
// que (*it)
juste au dessus.
Je comprend pas. Voici les class vraiment très simples c'était juste pour tester.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201013 15 mai 2005 à 19:56
end() pointe sur l'élément suivant le dernier, pas le dernier. end()
est donc toujours un objet invalide. Par exemple, le méthodes find
retournent end() quand un objet n'est pas trouvé.
Pour un iterateur sur le dernier element, il faut faire
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 15 mai 2005 à 20:02
Pour l'histoire des constructeurs bien sur je suis d'accord, mais
c'était pas le but, c'était seulement un test pour déployer une
technique grandeur nature :)