Je ne suis pas familier avec les pointeurs intelligents et j'essayais de refactoriser du code existant pour utiliser auto_ptr. La question que je me pose concerne les doubles pointeurs et leur équivalent auto_ptr, si cela a du sens.Pointeur vers auto_ptr au lieu d'un double pointeur classique
J'ai une fonction qui accepte un double pointeur comme paramètre et la fonction alloue des ressources pour elle:
void foo (Image** img) { ... *img = new Image(); ...}
Cette fonction est alors utilisée comme ceci:
Image* img = NULL;
foo (&img);
...
delete img;
Je veux utiliser auto_ptr pour éviter d'appeler explicitement delete. Est-ce que ce qui suit est correct?
void foo (auto_ptr<Image>* img) { ... *img = auto_ptr<Image>(new Image()); ...}
puis
auto_ptr<Image> img = NULL;
foo (&img);
Merci.
Si non, pourquoi ne pas retourner un 'auto_ptr'? – UncleBens
Ouais, la fonction renvoie un bool qui indique si tout s'est bien passé. Je suppose que je pourrais juste jeter une exception pour cela ... – Pin
... ou retourner un pointeur 'NULL'? – sbi