gpt4 book ai didi

c++ - 返回函数参数 unique_ptr

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:22 25 4
gpt4 key购买 nike

我有以下方法:

std::unique_ptr<Req> RequestConverter::SetReg(
const std::unique_ptr<Req> pb_req, ...) {

我想从上面的方法返回参数 pb_req。我收到此错误(有或没有 std::move):

error: call to deleted constructor of 'std::unique_ptr<Req>'

推荐的方法是什么?

谢谢

最佳答案

unique_ptr复制构造函数被标记为已删除,即如下

unique_ptr(const unique_ptr&) = delete;

当你返回一个 const unique_ptr<Req>从你的函数中,返回值被视为右值,因此如果可用的话,构造函数的精确匹配将是

unique_ptr(const unique_ptr&&);

移动构造函数不匹配const unique_ptr<Req>&&因为它需要一个非 const右值引用。所以最接近的匹配是被删除的复制构造函数,因此这是行不通的。

但是您应该问自己的问题是,为什么要标记 unique_ptr首先是常量? const unique_ptr意味着指针是常量,而不是指向的东西。如果你想要 unique_ptr const,你应该做unique_ptr<const Req>反而。

关于c++ - 返回函数参数 unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44419379/

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