bon, la j'ai le bon affichagen et tout le contenu de mon cache s'affiche
correctement
mot1
mot2
mot3
...
dans le main, je fait simplement
#include "fichier.h"
...
vector<string>::iterator it;
for (it = fichier.getCache().begin();
it < fichier.getCache().end();
it++)
{ cout << *it << endl;}
et je pensais obtenir normalement la meme chose !
or j ai :
mot1 + caracteres divers
mot2 + caracteres divers
core !!!!!
j'ai mal compris quelquechose, mais quoi ???
merci de vos reponses
@+
ricky
et bon noelllll a tous !
et merci pour vos contributions tres interessants a lire, plus
instructif que bcp de bouquins
merci a toi, j'allais faire cela de toute facon (pour eviter de recopier trop de donnees a la fois), mais je voulais comprendre ce qui coincait ... et c'etait devant mes yeux !
bon noel a vous !
@+ ricky
bonjour
Chaque appel de Fichier::getCache crée une copie temporaire de cacheFichier_
oui
qui cesse d'exister une fois l'instruction executée.
et zut, je l'avais oublie celle la :-(
"*it" a donc un comportement imprévisible.
hum je suis meme etonne qu'il trouve une partie de ses petits apres mure
reflexion
C'est ici que se situe le problème, getCache retour le vecteur par valeur et
non par référence.
oui
En bref chaque appel de getCache va créer une copie différente du vecteur.
Solution: retourner une référence à cacheFichier_ ainsi:
merci a toi, j'allais faire cela de toute facon (pour eviter de recopier
trop de donnees a la fois), mais je voulais comprendre ce qui coincait
... et c'etait devant mes yeux !
merci a toi, j'allais faire cela de toute facon (pour eviter de recopier trop de donnees a la fois), mais je voulais comprendre ce qui coincait ... et c'etait devant mes yeux !
bon noel a vous !
@+ ricky
Fabien LE LEZ
On Tue, 23 Dec 2003 18:25:17 +0100, ricky wrote:
it < fichier.getCache().end();
Code incorrect. Il faut employer "!=" et non pas "<", même si dans le cas particulier de std::vector<>, ta version marche sur certaines implémentations de la STL.
-- ;-)
On Tue, 23 Dec 2003 18:25:17 +0100, ricky <eric_nyme@yahoo.fr> wrote:
it < fichier.getCache().end();
Code incorrect. Il faut employer "!=" et non pas "<", même si dans le
cas particulier de std::vector<>, ta version marche sur certaines
implémentations de la STL.
Code incorrect. Il faut employer "!=" et non pas "<", même si dans le cas particulier de std::vector<>, ta version marche sur certaines implémentations de la STL.
-- ;-)
kanze
Fabien LE LEZ wrote in message news:...
On Tue, 23 Dec 2003 18:25:17 +0100, ricky wrote:
it < fichier.getCache().end();
Code incorrect. Il faut employer "!=" et non pas "<", même si dans le cas particulier de std::vector<>, ta version marche sur certaines implémentations de la STL.
Dans le cas de std::vector<>, sa version doit marcher sur toute implémentation conforme. Mais c'est effectivement une particularité de std::vector<> et std::deque<> ; c'est sans doute meiux de prendre l'habitude de ne pas y compter.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Fabien LE LEZ <gramster@gramster.com> wrote in message
news:<0u4huvc78k1vhb8etgcq16nrt5gvo9quqk@4ax.com>...
On Tue, 23 Dec 2003 18:25:17 +0100, ricky <eric_nyme@yahoo.fr> wrote:
it < fichier.getCache().end();
Code incorrect. Il faut employer "!=" et non pas "<", même si dans le
cas particulier de std::vector<>, ta version marche sur certaines
implémentations de la STL.
Dans le cas de std::vector<>, sa version doit marcher sur toute
implémentation conforme. Mais c'est effectivement une particularité de
std::vector<> et std::deque<> ; c'est sans doute meiux de prendre
l'habitude de ne pas y compter.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Code incorrect. Il faut employer "!=" et non pas "<", même si dans le cas particulier de std::vector<>, ta version marche sur certaines implémentations de la STL.
Dans le cas de std::vector<>, sa version doit marcher sur toute implémentation conforme. Mais c'est effectivement une particularité de std::vector<> et std::deque<> ; c'est sans doute meiux de prendre l'habitude de ne pas y compter.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16