错误:使用已删除的函数‘std::unique_ptr<...> [关闭]
Posted
技术标签:
【中文标题】错误:使用已删除的函数‘std::unique_ptr<...> [关闭]【英文标题】:error: use of deleted function ‘std::unique_ptr<...> [closed] 【发布时间】: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,它会复制您询问的错误并且不包含其他不相关的错误。另外请将full和complete错误输出复制粘贴到问题中,并在错误所在的代码中添加注释。
至于你问的错误,想想getEmployee
真正返回的是什么......它返回了Employee
对象的副本,因为@987654329 @ 包含 std::unique_ptr
成员,无法复制。
std::unique_ptr<Address>
没有名为 updateCity
的函数。您可以使用->
而不是.
,我认为这不是给出给定错误的代码。
【参考方案1】:
找到解决方案感谢您花时间回答我的问题
解决方案
标记
Employee mEmployee;
作为参考
Employee& mEmployee;
【讨论】:
以上是关于错误:使用已删除的函数‘std::unique_ptr<...> [关闭]的主要内容,如果未能解决你的问题,请参考以下文章