我对智能指针很陌生,并试图重构一些现有代码以使用 auto_ptr。我的问题是关于双指针和它们的 auto_ptr 等价物,如果这有意义的话。
我有一个接受双指针作为参数的函数,并且该函数为其分配资源:
void foo ( Image** img ) { ... *img = new Image(); ...}
然后像这样使用这个函数:
Image* img = NULL;
foo ( &img );
...
delete img;
我想使用 auto_ptr 来避免显式调用 delete 。以下是正确的吗?
void foo ( auto_ptr<Image>* img ) { ... *img = auto_ptr<Image>(new Image()); ...}
进而
auto_ptr<Image> img = NULL;
foo ( &img );
谢谢。