gpt4 book ai didi

c++ - 传递 unique_ptr 数组的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 23:41:45 27 4
gpt4 key购买 nike

如果我不想复制,这是传递 unique_ptr 数组的正确方法吗?

换句话说,我希望发生在 x 上的所有事情都能影响调用者中的 arr。

void doWork( unique_ptr<Foo> x[] )
{
// I want assignments to x to impact caller's arr
}

int main()
{
unique_ptr<Foo> arr[10];
doWork( arr );
}

最佳答案

您的代码没有真正的问题,因为当像这样(按值)传递时,数组衰减 到指针1。但是,以下肯定会更 C++:

typedef std::vector<std::unique_ptr<Foo> > FooVec;   // dynamic size
typedef std::array<std::unique_ptr<Foo>, 10> FooArr; // fixed size (10)

void doWork( FooVec& x ) // or FooArr&
{
// I want assignments to x to impact caller's arr
}

int main()
{
FooVec vec(10);
FooArr arr;
doWork( vec );
}

1 换句话说,它相当于

void doWork( unique_ptr<Foo> *x )

要停止衰减,通过引用传递:

void doWork( unique_ptr<Foo> (&x)[10] )

关于c++ - 传递 unique_ptr 数组的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8333550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com