2

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

void Create1(Obj** obj1, Obj** obj2)
{
    *obj1 = new Obj;
    *obj2 = new Obj;
}

通常,在类似的情况下,当我有一个带有一个变量的函数时,我会使用“源”技巧auto_ptr

auto_ptr<Obj> Create2()
{
    return new Obj;
}

我想改写Create1usingauto_ptr但不知道该怎么做。据我了解,我不能通过引用返回 auto_ptr,对吗?那么有可能吗?

4

2 回答 2

4

相关问题:从 C++ 函数返回多个值

我不希望在一对或元组中使用 auto_ptr 会出现问题。返回一个包含几个 auto_ptr 成员的结构也应该有效。

于 2009-07-30T14:18:37.280 回答
4

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

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

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

于 2009-07-30T14:19:39.883 回答