class A
{
private :
int seed;
std::ofstream ofile;
public:
int operator() (void) {return seed;}
void Save(void) { ofile.open("coucou.txt");ofile.close();}
};
int main(void)
{
A a=A();
a.Save();
std::vector<int> b(10000);
std::generate(b.begin(),b.end(),a);
return 0;
}
ça plante juste après le return 0, dans la fonction _Tidy de la class
basic_string (fichier XSTRING)
Si quelqu'un savait m'expliquer ce qu'il ne va pas, je l'en remercierais
d'avance.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Michaud
Dans le message 4220be2e$0$29681$,
class A { private : int seed; std::ofstream ofile; public: int operator() (void) {return seed;} void Save(void) { ofile.open("coucou.txt");ofile.close();} };
int main(void) { A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui devrait être impossible de toute façon... (mais certains compilateurs le permettaient, avec les risques encourus).
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans le message 4220be2e$0$29681$626a14ce@news.free.fr,
class A
{
private :
int seed;
std::ofstream ofile;
public:
int operator() (void) {return seed;}
void Save(void) { ofile.open("coucou.txt");ofile.close();}
};
int main(void)
{
A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui
devrait être impossible de toute façon... (mais certains
compilateurs le permettaient, avec les risques encourus).
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
class A { private : int seed; std::ofstream ofile; public: int operator() (void) {return seed;} void Save(void) { ofile.open("coucou.txt");ofile.close();} };
int main(void) { A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui devrait être impossible de toute façon... (mais certains compilateurs le permettaient, avec les risques encourus).
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
AG
Michel Michaud wrote:
Dans le message 4220be2e$0$29681$,
class A { private : int seed; std::ofstream ofile; public: int operator() (void) {return seed;} void Save(void) { ofile.open("coucou.txt");ofile.close();} };
int main(void) { A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui devrait être impossible de toute façon... (mais certains compilateurs le permettaient, avec les risques encourus).
oui, ça ne marche pas non plus.
Michel Michaud wrote:
Dans le message 4220be2e$0$29681$626a14ce@news.free.fr,
class A
{
private :
int seed;
std::ofstream ofile;
public:
int operator() (void) {return seed;}
void Save(void) { ofile.open("coucou.txt");ofile.close();}
};
int main(void)
{
A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui
devrait être impossible de toute façon... (mais certains
compilateurs le permettaient, avec les risques encourus).
class A { private : int seed; std::ofstream ofile; public: int operator() (void) {return seed;} void Save(void) { ofile.open("coucou.txt");ofile.close();} };
int main(void) { A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui devrait être impossible de toute façon... (mais certains compilateurs le permettaient, avec les risques encourus).
oui, ça ne marche pas non plus.
Michel Michaud
Dans le message 4220c8c6$0$29693$,
Michel Michaud wrote:
Dans le message 4220be2e$0$29681$,
class A { private : int seed; std::ofstream ofile; public: int operator() (void) {return seed;} void Save(void) { ofile.open("coucou.txt");ofile.close();} };
int main(void) { A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui devrait être impossible de toute façon... (mais certains compilateurs le permettaient, avec les risques encourus).
oui, ça ne marche pas non plus.
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream, donc le code que tu montres ne compile pas, avec mes deux compilateurs courants... Pour que ça fonctionne, il faudrait que tu fasses les choses autrement et ça règlerait peut-être ton autre problème... (Tu pourrais garder un pointeur sur un ofstream par exemple, et ajuster le reste de ta classe en conséquence, ou mettre le ofstream en variable locale dans ta fonction, etc.)
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans le message 4220c8c6$0$29693$626a14ce@news.free.fr,
Michel Michaud wrote:
Dans le message 4220be2e$0$29681$626a14ce@news.free.fr,
class A
{
private :
int seed;
std::ofstream ofile;
public:
int operator() (void) {return seed;}
void Save(void) { ofile.open("coucou.txt");ofile.close();}
};
int main(void)
{
A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui
devrait être impossible de toute façon... (mais certains
compilateurs le permettaient, avec les risques encourus).
oui, ça ne marche pas non plus.
Alors on ne peut pas t'aider vraiment. Ton code est incorrect,
comme je l'ai dit, on ne peut pas copier les ofstream, donc
le code que tu montres ne compile pas, avec mes deux compilateurs
courants... Pour que ça fonctionne, il faudrait que tu fasses les
choses autrement et ça règlerait peut-être ton autre problème...
(Tu pourrais garder un pointeur sur un ofstream par exemple, et
ajuster le reste de ta classe en conséquence, ou mettre le ofstream
en variable locale dans ta fonction, etc.)
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
class A { private : int seed; std::ofstream ofile; public: int operator() (void) {return seed;} void Save(void) { ofile.open("coucou.txt");ofile.close();} };
int main(void) { A a=A();
As-tu essayé avec simplement
A a;
Ça devrait suffire. Tu faisais une « copie » de ton ofile, ce qui devrait être impossible de toute façon... (mais certains compilateurs le permettaient, avec les risques encourus).
oui, ça ne marche pas non plus.
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream, donc le code que tu montres ne compile pas, avec mes deux compilateurs courants... Pour que ça fonctionne, il faudrait que tu fasses les choses autrement et ça règlerait peut-être ton autre problème... (Tu pourrais garder un pointeur sur un ofstream par exemple, et ajuster le reste de ta classe en conséquence, ou mettre le ofstream en variable locale dans ta fonction, etc.)
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
AG
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream, N'y a-t-il pas un moyen de faire sans le copier. Comme tu indiquais, ne
faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
donc le code que tu montres ne compile pas, avec mes deux compilateurs courants... Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo
pourtant non ? Y a-t-il des réglages particuliers à faire ?
Pour que ça fonctionne, il faudrait que tu fasses les
ou mettre le ofstream en variable locale dans ta fonction, etc.)
je vais essayer cela.
Merci.
Alors on ne peut pas t'aider vraiment. Ton code est incorrect,
comme je l'ai dit, on ne peut pas copier les ofstream,
N'y a-t-il pas un moyen de faire sans le copier. Comme tu indiquais, ne
faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
donc
le code que tu montres ne compile pas, avec mes deux compilateurs
courants...
Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo
pourtant non ? Y a-t-il des réglages particuliers à faire ?
Pour que ça fonctionne, il faudrait que tu fasses les
ou mettre le ofstream
en variable locale dans ta fonction, etc.)
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream, N'y a-t-il pas un moyen de faire sans le copier. Comme tu indiquais, ne
faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
donc le code que tu montres ne compile pas, avec mes deux compilateurs courants... Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo
pourtant non ? Y a-t-il des réglages particuliers à faire ?
Pour que ça fonctionne, il faudrait que tu fasses les
ou mettre le ofstream en variable locale dans ta fonction, etc.)
je vais essayer cela.
Merci.
Michel Michaud
Dans le message 4220d74c$0$29669$,
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream, N'y a-t-il pas un moyen de faire sans le copier. Comme tu
indiquais, ne faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
Oui, mais il y a une autre copie quand tu passes ton paramètre à generate.
donc le code que tu montres ne compile pas, avec mes deux compilateurs courants... Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo
pourtant non ? Y a-t-il des réglages particuliers à faire ?
C'est le compilateur auquel je pensais que je disais qu'il le permettait, mais ça reste incorrect (ça ne fonctionne pas vraiment comme tu peux le voir). En fait, je ne sais pas si d'autres compilateurs l'auront jamais accepté !
Et ce n'est pas vraiment un compilateur « courant » (même s'il reste assez utilisé), il date de 1998 ! Tu savais qu'on est en 2005 ? :-) (il y a au moins trois versions plus récentes, mais surtout beaucoup plus conformes au standard)
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans le message 4220d74c$0$29669$626a14ce@news.free.fr,
Alors on ne peut pas t'aider vraiment. Ton code est incorrect,
comme je l'ai dit, on ne peut pas copier les ofstream,
N'y a-t-il pas un moyen de faire sans le copier. Comme tu
indiquais, ne faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
Oui, mais il y a une autre copie quand tu passes ton paramètre
à generate.
donc
le code que tu montres ne compile pas, avec mes deux compilateurs
courants...
Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo
pourtant non ? Y a-t-il des réglages particuliers à faire ?
C'est le compilateur auquel je pensais que je disais qu'il le permettait,
mais ça reste incorrect (ça ne fonctionne pas vraiment comme tu peux le
voir). En fait, je ne sais pas si d'autres compilateurs l'auront jamais
accepté !
Et ce n'est pas vraiment un compilateur « courant » (même s'il reste
assez utilisé), il date de 1998 ! Tu savais qu'on est en 2005 ? :-)
(il y a au moins trois versions plus récentes, mais surtout beaucoup
plus conformes au standard)
--
Michel Michaud mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream, N'y a-t-il pas un moyen de faire sans le copier. Comme tu
indiquais, ne faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
Oui, mais il y a une autre copie quand tu passes ton paramètre à generate.
donc le code que tu montres ne compile pas, avec mes deux compilateurs courants... Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo
pourtant non ? Y a-t-il des réglages particuliers à faire ?
C'est le compilateur auquel je pensais que je disais qu'il le permettait, mais ça reste incorrect (ça ne fonctionne pas vraiment comme tu peux le voir). En fait, je ne sais pas si d'autres compilateurs l'auront jamais accepté !
Et ce n'est pas vraiment un compilateur « courant » (même s'il reste assez utilisé), il date de 1998 ! Tu savais qu'on est en 2005 ? :-) (il y a au moins trois versions plus récentes, mais surtout beaucoup plus conformes au standard)
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
AG
Michel Michaud wrote:
Dans le message 4220d74c$0$29669$,
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream,
N'y a-t-il pas un moyen de faire sans le copier. Comme tu indiquais, ne faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
Oui, mais il y a une autre copie quand tu passes ton paramètre à generate. ok je comprends
donc le code que tu montres ne compile pas, avec mes deux compilateurs courants...
Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo pourtant non ? Y a-t-il des réglages particuliers à faire ?
C'est le compilateur auquel je pensais que je disais qu'il le permettait, mais ça reste incorrect (ça ne fonctionne pas vraiment comme tu peux le voir). En fait, je ne sais pas si d'autres compilateurs l'auront jamais accepté ! d'accord.
Et ce n'est pas vraiment un compilateur « courant » (même s'il reste assez utilisé), il date de 1998 ! Tu savais qu'on est en 2005 ? :-) oui oui, mais bon, c'est les outils que j'ai.
(il y a au moins trois versions plus récentes, mais surtout beaucoup plus conformes au standard) j'ai redisigné mon truc en mettant le ofstream dans ma fonction, ça
marche trés bien comme ça.
Merci.
Michel Michaud wrote:
Dans le message 4220d74c$0$29669$626a14ce@news.free.fr,
Alors on ne peut pas t'aider vraiment. Ton code est incorrect,
comme je l'ai dit, on ne peut pas copier les ofstream,
N'y a-t-il pas un moyen de faire sans le copier. Comme tu
indiquais, ne faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
Oui, mais il y a une autre copie quand tu passes ton paramètre
à generate.
ok je comprends
donc
le code que tu montres ne compile pas, avec mes deux compilateurs
courants...
Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo
pourtant non ? Y a-t-il des réglages particuliers à faire ?
C'est le compilateur auquel je pensais que je disais qu'il le permettait,
mais ça reste incorrect (ça ne fonctionne pas vraiment comme tu peux le
voir). En fait, je ne sais pas si d'autres compilateurs l'auront jamais
accepté !
d'accord.
Et ce n'est pas vraiment un compilateur « courant » (même s'il reste
assez utilisé), il date de 1998 ! Tu savais qu'on est en 2005 ? :-)
oui oui, mais bon, c'est les outils que j'ai.
(il y a au moins trois versions plus récentes, mais surtout beaucoup
plus conformes au standard)
j'ai redisigné mon truc en mettant le ofstream dans ma fonction, ça
Alors on ne peut pas t'aider vraiment. Ton code est incorrect, comme je l'ai dit, on ne peut pas copier les ofstream,
N'y a-t-il pas un moyen de faire sans le copier. Comme tu indiquais, ne faire que :
A a;
au lieu de :
A a=A();
Evite de faire une copie non ?
Oui, mais il y a une autre copie quand tu passes ton paramètre à generate. ok je comprends
donc le code que tu montres ne compile pas, avec mes deux compilateurs courants...
Pourtant moi il compile avec VC++ 6.0. c'est courant comme compilo pourtant non ? Y a-t-il des réglages particuliers à faire ?
C'est le compilateur auquel je pensais que je disais qu'il le permettait, mais ça reste incorrect (ça ne fonctionne pas vraiment comme tu peux le voir). En fait, je ne sais pas si d'autres compilateurs l'auront jamais accepté ! d'accord.
Et ce n'est pas vraiment un compilateur « courant » (même s'il reste assez utilisé), il date de 1998 ! Tu savais qu'on est en 2005 ? :-) oui oui, mais bon, c'est les outils que j'ai.
(il y a au moins trois versions plus récentes, mais surtout beaucoup plus conformes au standard) j'ai redisigné mon truc en mettant le ofstream dans ma fonction, ça