bonjour
j'ai besoin de faire une liste d'objet qui se d=E9truiront automatiquemen=
t.
Pour cel=E0 en utilisant la STL, j'utilise une list d'auto_ptr.
plus pr=E9cis=E9ment:
class A;
typedef auto_ptr<A> auto_A;
typedef list<auto_ptr> list_A;
ainsi, quand j'ajoute un =E9l=E9ment, il se cr=E9=E9 (le constructeur est=
=20
appel=E9), puis je l'ajoute dans la list (pas de copie, pas de=20
constructeur appell=E9). Puis =E0 la destruction de la list (lors d'un er=
ase=20
ou d'un pop_*), le destructeur est appell=E9.
J'ai l'impression que =E7a marche mais mon programme semble instable de=20
temps en temps j'aimerais savoir si =E7a peu venir de cette m=E9thode=20
(est-elle vraiment propre?). Y a t il un autre moyen?
Avant j'utilisais une list<A> qui marchait mais pour ajouter un =E9l=E9me=
nt=20
il fallait le cr=E9er, puis lors d'un push_*, il en faisait la copie, et =
ensuite pouvait etre d=E9truit automatiquement.
Je me demande si en utilisant les allocators =E7a ne marcherais pas.
oui dans le sens ou il peut y avoir + rapide (et je ne trouve pas celà beau): on ne créé qu'une fois l'objet. Par contre, si on me dit que c'est comme ça qu'on programme (bien) en C++, je retournerais à ma premiere methode.
Ce qui est gênant dans ta méthode c'est que pour gagner un temps qui si
ça se trouve est négligeable tu te complique la vie avec l'allocation dynamique ... alors tu te tournes vers les "smart pointers" qui présentent pas mal de risque quand on ne sait pas vraiment les utiliser (ie qu'on ne connaît pas bien leur limitations) ce qui rends ton code plus propice au non fonctionnement.
Mais après c'est toi qui voit
-- Frederic Py
Gaetan said the following on 08/20/03 17:42:
Fabien LE LEZ wrote:
On Wed, 20 Aug 2003 15:27:41 +0200, Gaetan <gaetan.semet@free.fr>
wrote:
Donc il y a un objet construit pour "rien"...
Et est-ce problématique ?
oui dans le sens ou il peut y avoir + rapide (et je ne trouve pas celà
beau): on ne créé qu'une fois l'objet.
Par contre, si on me dit que c'est comme ça qu'on programme (bien) en
C++, je retournerais à ma premiere methode.
Ce qui est gênant dans ta méthode c'est que pour gagner un temps qui si
ça se trouve est négligeable tu te complique la vie avec l'allocation
dynamique ... alors tu te tournes vers les "smart pointers" qui
présentent pas mal de risque quand on ne sait pas vraiment les utiliser
(ie qu'on ne connaît pas bien leur limitations) ce qui rends ton code
plus propice au non fonctionnement.
oui dans le sens ou il peut y avoir + rapide (et je ne trouve pas celà beau): on ne créé qu'une fois l'objet. Par contre, si on me dit que c'est comme ça qu'on programme (bien) en C++, je retournerais à ma premiere methode.
Ce qui est gênant dans ta méthode c'est que pour gagner un temps qui si
ça se trouve est négligeable tu te complique la vie avec l'allocation dynamique ... alors tu te tournes vers les "smart pointers" qui présentent pas mal de risque quand on ne sait pas vraiment les utiliser (ie qu'on ne connaît pas bien leur limitations) ce qui rends ton code plus propice au non fonctionnement.