【问题标题】:error: use of deleted function ‘std::unique_ptr<...> [closed]错误:使用已删除的函数‘std::unique_ptr<...> [关闭]
【发布时间】:2020-05-12 20:37:04
【问题描述】:

我是 C++ 编程新手。我试图使用一个外部库,我可以在其中访问头文件和 .so 库。

这是我的图书馆代码

class Employee {
private:
      std::unique_ptr<Address> address;
      ................
      ................
      ................
public:
     virtual void updateAddressCity(cont string& city){ address.updateCity(city); }
}

我试图在我的类构造函数中初始化这个员工变量,我遇到了这个错误

错误:使用已删除的函数‘std::unique_ptr<...>

EmployeeInfo.h

class EmployeeInfo{
private:
Employee mEmployee;

public:
Employee getEmployee();
}

EmployeeInfo.cpp

EmployeeInfo::EmployeeInfo(Employee &employee) : mEmployee(employee) {

}

【问题讨论】:

  • 您应该得到address.updateCity(city) 的错误,因为address 是指向对象的指针,而不是对象实例本身。请尝试创建一个minimal reproducible example,它会复制您询问的错误并且不包含其他不相关的错误。另外请将fullcomplete错误输出复制粘贴到问题中,并在错误所在的代码中添加注释。
  • 至于你问的错误,想想getEmployee真正返回的是什么......它返回了Employee对象的副本,因为@987654329 @ 包含 std::unique_ptr 成员,无法复制。
  • std::unique_ptr&lt;Address&gt; 没有名为 updateCity 的函数。您可以使用-&gt; 而不是.,我认为这不是给出给定错误的代码。

标签: c++ pointers reference unique-ptr


【解决方案1】:

找到解决方案感谢您花时间回答我的问题

解决方案 标记 Employee mEmployee;作为参考

Employee&amp; mEmployee;

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2020-09-16
    相关资源
    最近更新 更多