【发布时间】:2018-02-27 16:35:18
【问题描述】:
我有一个用户定义对象的向量,例如
std::vector<UserDefinedClass> list_of_objects;
UserDefinedClass 没有任何显式的复制构造函数。
现在我想复制它们。所以,我定义了
std::vector<UserDefinedClass> list_of_objects_copied;
list_of_objects_copied = list_of_objects;
我真的需要一个复制构造函数来迭代向量并将向量中的对象一一复制吗?
错误是
error: use of deleted function ‘UserDefinedClass& UserDefinedClass::operator=(const UserDefinedClass&)’
如果我使用 int、double 等内置对象,我在复制列表时没有任何问题。
类定义
UserDefinedClass {
private:
int &m_a;
public:
UserDefinedClass(int a):m_a(a) {};
};
【问题讨论】:
-
我认为您错误地使用了术语“复制构造函数”。您的选择是分配向量或 for 循环。第二个选项与复制构造函数无关。如果您不同意,请澄清您的问题。
-
不,如果你没有明确定义除构造函数之外的任何其他内容,你可能没有。
-
展示你的班级。
-
@anatolyg 你是对的,它不是 UserDefinedClass 的复制构造函数,而是类 Vector 的复制构造函数。 Vector类只能处理int、double等内置对象吗?
标签: c++