【发布时间】:2015-01-29 12:22:53
【问题描述】:
我有 2 个 A 和 B 类
//A.h
class A{};
// B.h
typedef unique_ptr<A, AllocateA> APtr;
typedef vector<APtr> BVEC;
class B
{
public:
BVEC vec; //error is here
//....
};
当我编译代码时,我得到unique_ptr....attempting to reference a deleted function
然后我像这样向 B 类添加一个复制构造函数和一个赋值运算符
class B
{
public:
BVEC vec; //error is here
//....
B& operator=(B&b);
B(B&b);
};
但我仍然收到相同的错误消息。
【问题讨论】:
-
unique_ptr 无法复制。试试 shared_ptr。
-
@user0175554 什么是
AllocateA?请告诉我,这不是您命名删除器的名称。 -
如果你想转让所有权,你不能有一个拷贝构造函数。复制操作应保持原件不变。
-
为什么你的问题标题提到共享指针?
unique_ptr与shared_ptr不一样 -
您的复制构造函数和赋值运算符应采用
const B&参数。
标签: c++ vector copy-constructor unique-ptr ownership