私はスマート ポインターを初めて使用し、既存のコードをリファクタリングして auto_ptr を使用しようとしていました。私が持っている質問は、それが理にかなっている場合、ダブルポインターとそれに相当する auto_ptr についてです。
ダブルポインターをパラメーターとして受け入れる関数があり、関数はそれにリソースを割り当てます。
void foo ( Image** img ) { ... *img = new Image(); ...}
この関数は、次のように使用されます。
Image* img = NULL;
foo ( &img );
...
delete img;
delete を明示的に呼び出す必要がないように、auto_ptr を使用したいと考えています。以下は正しいですか?
void foo ( auto_ptr<Image>* img ) { ... *img = auto_ptr<Image>(new Image()); ...}
その後
auto_ptr<Image> img = NULL;
foo ( &img );
ありがとう。