从函数返回多个 auto_ptr

发布于 2024-07-30 06:40:16 字数 432 浏览 8 评论 0原文

我有一个函数,它在堆上分配两个变量并将它们返回给调用者。 像这样的事情:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽清梦 2024-08-06 06:40:16

您可以通过调用其 reset 方法来分配给 std::auto_ptr

void f( std::auto_ptr<Obj>& pObj1, std::auto_ptr<Obj>& pObj2 )
{
    pObj1.reset( new Obj );
    pObj2.reset( new Obj );
}

reset 调用将正确删除 auto_ptr 中的任何内容。 code> 指向之前。

You can assign to a std::auto_ptr by calling its reset method:

void f( std::auto_ptr<Obj>& pObj1, std::auto_ptr<Obj>& pObj2 )
{
    pObj1.reset( new Obj );
    pObj2.reset( new Obj );
}

The reset call will properly delete whatever the auto_ptr was pointing to before.

合久必婚 2024-08-06 06:40:16

相关问题: 从 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文