从函数返回多个 auto_ptr
我有一个函数,它在堆上分配两个变量并将它们返回给调用者。 像这样的事情:
void Create1(Obj** obj1, Obj** obj2)
{
*obj1 = new Obj;
*obj2 = new Obj;
}
通常,在类似的情况下,当我有一个带有一个变量的函数时,我将“源”技巧与 auto_ptr
结合使用:
auto_ptr<Obj> Create2()
{
return new Obj;
}
我想使用 Create1
重写 Create1
code>auto_ptr 但不知道该怎么做。 据我了解,我无法通过引用返回 auto_ptr,对吗? 那么这有可能吗?
I have a function that allocates two variables on the heap and returns them to the caller. Something like this:
void Create1(Obj** obj1, Obj** obj2)
{
*obj1 = new Obj;
*obj2 = new Obj;
}
Usually, in similar cases, when I have a function with one variable I use the "source" trick with auto_ptr
:
auto_ptr<Obj> Create2()
{
return new Obj;
}
I would like to rewrite Create1
using auto_ptr
but not sure how to do it. As far as I understand I cannot return auto_ptr by reference, am I right? So is it possible at all?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以通过调用其
reset
方法来分配给std::auto_ptr
:reset
调用将正确删除auto_ptr
中的任何内容。 code> 指向之前。You can assign to a
std::auto_ptr
by calling itsreset
method:The
reset
call will properly delete whatever theauto_ptr
was pointing to before.相关问题: 从 C++ 函数返回多个值
我预计不会出现问题在对或元组中使用 auto_ptr。 返回包含几个 auto_ptr 成员的结构也应该有效。
Related question: Returning multiple values from a C++ function
I wouldn't expect problems using auto_ptr in a pair or tuple. Returning a struct containing a couple of auto_ptr members should work too.