【发布时间】: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的函数。您可以使用->而不是.,我认为这不是给出给定错误的代码。
标签: c++ pointers reference unique-ptr