Et euh, ca marche pas, la taille de ObjectList est bien augmentée etc,
mais l'objet inséré inséré est créé et puis detruit juste apres je vois pas
pourquoi...
Et euh, ca marche pas, la taille de ObjectList est bien augmentée etc, mais l'objet inséré inséré est créé et puis detruit juste apres je vois pas pourquoi...
L'objet "CObject(Name,Arg)" est un objet temporaire qui est détruit (probablement) après l'appel de make_pair. Mais la map en conserve une copie.
Je suppose que puisque tu dis que l'objet "est créé et puis détruit", c'est que tu repère d'une manière ou d'une autre les passages dans le constructeur et le destructeur. Mais tu n'as peut-être pas pensé au constructeur de copie qui est créé par le compilateur même si tu ne le l'écris pas toi-même.
Et euh, ca marche pas, la taille de ObjectList est bien augmentée
etc,
mais l'objet inséré inséré est créé et puis detruit juste apres je vois
pas pourquoi...
L'objet "CObject(Name,Arg)" est un objet temporaire qui est détruit
(probablement) après l'appel de make_pair. Mais la map en conserve une
copie.
Je suppose que puisque tu dis que l'objet "est créé et puis détruit",
c'est que tu repère d'une manière ou d'une autre les passages dans le
constructeur et le destructeur. Mais tu n'as peut-être pas pensé au
constructeur de copie qui est créé par le compilateur même si tu ne le
l'écris pas toi-même.
Et euh, ca marche pas, la taille de ObjectList est bien augmentée etc, mais l'objet inséré inséré est créé et puis detruit juste apres je vois pas pourquoi...
L'objet "CObject(Name,Arg)" est un objet temporaire qui est détruit (probablement) après l'appel de make_pair. Mais la map en conserve une copie.
Je suppose que puisque tu dis que l'objet "est créé et puis détruit", c'est que tu repère d'une manière ou d'une autre les passages dans le constructeur et le destructeur. Mais tu n'as peut-être pas pensé au constructeur de copie qui est créé par le compilateur même si tu ne le l'écris pas toi-même.
-- Cyrille
Flzw
"Cyrille Karmann" wrote in message news:411e48ae$0$6132$
Et euh, ca marche pas, la taille de ObjectList est bien augmentée etc, mais l'objet inséré inséré est créé et puis detruit juste apres je vois pas pourquoi...
L'objet "CObject(Name,Arg)" est un objet temporaire qui est détruit (probablement) après l'appel de make_pair. Mais la map en conserve une copie.
C'est bien ce que je pensais.
Je suppose que puisque tu dis que l'objet "est créé et puis détruit", c'est que tu repère d'une manière ou d'une autre les passages dans le constructeur et le destructeur. Mais tu n'as peut-être pas pensé au constructeur de copie qui est créé par le compilateur même si tu ne le l'écris pas toi-même.
En effet le destructeur est appelé plus de fois que le constructeur, je trouvais ca etrange, existe t il une facon d'avoir le meme resultat en ne creant qu'une instance de l'objet en tout et sans necessiter un constructeur par defaut ni un operateur de copie, merci.
"Cyrille Karmann" <cyrille@frsf.invalid> wrote in message
news:411e48ae$0$6132$626a14ce@news.free.fr...
Et euh, ca marche pas, la taille de ObjectList est bien augmentée
etc,
mais l'objet inséré inséré est créé et puis detruit juste apres je vois
pas pourquoi...
L'objet "CObject(Name,Arg)" est un objet temporaire qui est détruit
(probablement) après l'appel de make_pair. Mais la map en conserve une
copie.
C'est bien ce que je pensais.
Je suppose que puisque tu dis que l'objet "est créé et puis détruit",
c'est que tu repère d'une manière ou d'une autre les passages dans le
constructeur et le destructeur. Mais tu n'as peut-être pas pensé au
constructeur de copie qui est créé par le compilateur même si tu ne le
l'écris pas toi-même.
En effet le destructeur est appelé plus de fois que le constructeur, je
trouvais ca etrange, existe t il une facon d'avoir le meme resultat en ne
creant qu'une instance de l'objet en tout et sans necessiter un constructeur
par defaut ni un operateur de copie, merci.
Et euh, ca marche pas, la taille de ObjectList est bien augmentée etc, mais l'objet inséré inséré est créé et puis detruit juste apres je vois pas pourquoi...
L'objet "CObject(Name,Arg)" est un objet temporaire qui est détruit (probablement) après l'appel de make_pair. Mais la map en conserve une copie.
C'est bien ce que je pensais.
Je suppose que puisque tu dis que l'objet "est créé et puis détruit", c'est que tu repère d'une manière ou d'une autre les passages dans le constructeur et le destructeur. Mais tu n'as peut-être pas pensé au constructeur de copie qui est créé par le compilateur même si tu ne le l'écris pas toi-même.
En effet le destructeur est appelé plus de fois que le constructeur, je trouvais ca etrange, existe t il une facon d'avoir le meme resultat en ne creant qu'une instance de l'objet en tout et sans necessiter un constructeur par defaut ni un operateur de copie, merci.
Cyrille Karmann
"Flzw" disait:
Je suppose que puisque tu dis que l'objet "est créé et puis détruit", c'est que tu repère d'une manière ou d'une autre les passages dans le constructeur et le destructeur. Mais tu n'as peut-être pas pensé au constructeur de copie qui est créé par le compilateur même si tu ne le l'écris pas toi-même.
En effet le destructeur est appelé plus de fois que le constructeur, je trouvais ca etrange, existe t il une facon d'avoir le meme resultat en ne creant qu'une instance de l'objet en tout et sans necessiter un constructeur par defaut ni un operateur de copie, merci.
Ben... si vous voulez le contrôle total de la durée de vie de vos objets, vous pouvez le créer dynamiquement.
CObject *obj = new CObject(Name,Arg); ObjectList.insert(make_pair(key, obj));
// .... delete obj;
L'ennui, c'est bien sûr qu'il ne faut pas oublier d'appeler delete, et qu'il faut éviter de l'appeler tant que ObjectList contient encore un pointeur sur l'objet, sinon un bout de votre code risque de vouloir s'en servir et si vous l'avez détruit, ça fera kaboum.
Il y a peut-être moyen de s'en tirer avec des "pointeurs intelligents" avec compteur de références, mais je ne suis pas très au fait de ce genre de techniques.
-- Cyrille
"Flzw" <flownz@wanadoo.fr> disait:
Je suppose que puisque tu dis que l'objet "est créé et puis détruit",
c'est que tu repère d'une manière ou d'une autre les passages dans le
constructeur et le destructeur. Mais tu n'as peut-être pas pensé au
constructeur de copie qui est créé par le compilateur même si tu ne le
l'écris pas toi-même.
En effet le destructeur est appelé plus de fois que le constructeur, je
trouvais ca etrange, existe t il une facon d'avoir le meme resultat en
ne creant qu'une instance de l'objet en tout et sans necessiter un
constructeur par defaut ni un operateur de copie, merci.
Ben... si vous voulez le contrôle total de la durée de vie de vos
objets, vous pouvez le créer dynamiquement.
CObject *obj = new CObject(Name,Arg);
ObjectList.insert(make_pair(key, obj));
// ....
delete obj;
L'ennui, c'est bien sûr qu'il ne faut pas oublier d'appeler delete, et
qu'il faut éviter de l'appeler tant que ObjectList contient encore un
pointeur sur l'objet, sinon un bout de votre code risque de vouloir s'en
servir et si vous l'avez détruit, ça fera kaboum.
Il y a peut-être moyen de s'en tirer avec des "pointeurs intelligents"
avec compteur de références, mais je ne suis pas très au fait de ce
genre de techniques.
Je suppose que puisque tu dis que l'objet "est créé et puis détruit", c'est que tu repère d'une manière ou d'une autre les passages dans le constructeur et le destructeur. Mais tu n'as peut-être pas pensé au constructeur de copie qui est créé par le compilateur même si tu ne le l'écris pas toi-même.
En effet le destructeur est appelé plus de fois que le constructeur, je trouvais ca etrange, existe t il une facon d'avoir le meme resultat en ne creant qu'une instance de l'objet en tout et sans necessiter un constructeur par defaut ni un operateur de copie, merci.
Ben... si vous voulez le contrôle total de la durée de vie de vos objets, vous pouvez le créer dynamiquement.
CObject *obj = new CObject(Name,Arg); ObjectList.insert(make_pair(key, obj));
// .... delete obj;
L'ennui, c'est bien sûr qu'il ne faut pas oublier d'appeler delete, et qu'il faut éviter de l'appeler tant que ObjectList contient encore un pointeur sur l'objet, sinon un bout de votre code risque de vouloir s'en servir et si vous l'avez détruit, ça fera kaboum.
Il y a peut-être moyen de s'en tirer avec des "pointeurs intelligents" avec compteur de références, mais je ne suis pas très au fait de ce genre de techniques.
-- Cyrille
Flzw
Ben... si vous voulez le contrôle total de la durée de vie de vos objets, vous pouvez le créer dynamiquement.
CObject *obj = new CObject(Name,Arg); ObjectList.insert(make_pair(key, obj));
// .... delete obj;
Ok donc il faut que je passe sur du std::map <string, CObject*>
Merci.
Ben... si vous voulez le contrôle total de la durée de vie de vos
objets, vous pouvez le créer dynamiquement.
CObject *obj = new CObject(Name,Arg);
ObjectList.insert(make_pair(key, obj));
// ....
delete obj;
Ok donc il faut que je passe sur du std::map <string, CObject*>
Ben... si vous voulez le contrôle total de la durée de vie de vos objets, vous pouvez le créer dynamiquement.
CObject *obj = new CObject(Name,Arg); ObjectList.insert(make_pair(key, obj));
// .... delete obj;
Ok donc il faut que je passe sur du std::map <string, CObject*>
Merci.
drkm
"Flzw" writes:
En effet le destructeur est appelé plus de fois que le constructeur, je trouvais ca etrange,
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu peux cependant avoir plusieurs constructeurs. Peut-être la confusion vient-elle de là ?
--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
"Flzw" <flownz@wanadoo.fr> writes:
En effet le destructeur est appelé plus de fois que le constructeur, je
trouvais ca etrange,
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu
peux cependant avoir plusieurs constructeurs. Peut-être la confusion
vient-elle de là ?
--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
En effet le destructeur est appelé plus de fois que le constructeur, je trouvais ca etrange,
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu peux cependant avoir plusieurs constructeurs. Peut-être la confusion vient-elle de là ?
--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Flzw
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu peux cependant avoir plusieurs constructeurs. Peut-être la confusion vient-elle de là ?
Non je n'ai qu'un constructeur, mais comme suggeré plus haut, le compilateur appelle peut etre un constructeur de copine par defaut qu'il a fait lui meme ?
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu
peux cependant avoir plusieurs constructeurs. Peut-être la confusion
vient-elle de là ?
Non je n'ai qu'un constructeur, mais comme suggeré plus haut, le compilateur
appelle peut etre un constructeur de copine par defaut qu'il a fait lui meme
?
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu peux cependant avoir plusieurs constructeurs. Peut-être la confusion vient-elle de là ?
Non je n'ai qu'un constructeur, mais comme suggeré plus haut, le compilateur appelle peut etre un constructeur de copine par defaut qu'il a fait lui meme ?
Pierre Maurette
"Flzw" a écrit: [...]
appelle peut etre un constructeur de copine par defaut qu'il a fait lui meme ? Un constructeur de copine, ça m'intéresse, je suis un peu "à la rue"
actuellement. Si vous pouviez m'en faire uns ... copine ? -- Pierre
"Flzw" <flownz@wanadoo.fr> a écrit:
[...]
appelle peut etre un constructeur de copine par defaut qu'il a fait lui meme
?
Un constructeur de copine, ça m'intéresse, je suis un peu "à la rue"
actuellement. Si vous pouviez m'en faire uns ... copine ?
--
Pierre
On Sun, 15 Aug 2004 12:20:55 +0200, Pierre Maurette :
Un constructeur de copine, ça m'intéresse, je suis un peu "à la rue" actuellement. Si vous pouviez m'en faire uns ... copine ?
Fais gaffe au cast (pas toujour explicite) de "copine" vers "épouse"... http://www.naute.com/blagues/epouse1.0.phtml
-- ;-)
drkm
"Flzw" writes:
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu peux cependant avoir plusieurs constructeurs. Peut-être la confusion vient-elle de là ?
Non je n'ai qu'un constructeur, mais comme suggeré plus haut, le compilateur appelle peut etre un constructeur de copine
:-D
par defaut qu'il a fait lui meme ?
C'est bien ce que je voulais dire. Remarque que constructeur de copie et constructeur par défaut sont deux choses différentes.
--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
"Flzw" <flownz@wanadoo.fr> writes:
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu
peux cependant avoir plusieurs constructeurs. Peut-être la confusion
vient-elle de là ?
Non je n'ai qu'un constructeur, mais comme suggeré plus haut, le compilateur
appelle peut etre un constructeur de copine
:-D
par defaut qu'il a fait lui meme
?
C'est bien ce que je voulais dire. Remarque que constructeur de
copie et constructeur par défaut sont deux choses différentes.
--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html
Ce n'est pas normal. Par contre, si tu n'as qu'un destructeur, tu peux cependant avoir plusieurs constructeurs. Peut-être la confusion vient-elle de là ?
Non je n'ai qu'un constructeur, mais comme suggeré plus haut, le compilateur appelle peut etre un constructeur de copine
:-D
par defaut qu'il a fait lui meme ?
C'est bien ce que je voulais dire. Remarque que constructeur de copie et constructeur par défaut sont deux choses différentes.
--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html