gpt4 book ai didi

c++ - 我是否必须显式地编写一个复制构造函数来将一个对象 vector 复制到另一个对象中?

转载 作者:行者123 更新时间:2023-11-30 01:37:48 26 4
gpt4 key购买 nike

我有一个用户定义对象的 vector ,例如

std::vector<UserDefinedClass> list_of_objects;

UserDefinedClass 没有任何显式复制构造函数。

现在我想复制它们。所以,我定义

std::vector<UserDefinedClass> list_of_objects_copied;
list_of_objects_copied = list_of_objects;

我真的需要一个复制构造函数来迭代 vector 并逐一复制 vector 中的对象吗?

错误是

error: use of deleted function ‘UserDefinedClass& UserDefinedClass::operator=(const UserDefinedClass&)’

如果我使用内置对象,如 int、double 等,我在复制列表时没有任何问题。

类定义

UserDefinedClass {
private:
int &m_a;
public:
UserDefinedClass(int a):m_a(a) {};
};

最佳答案

您的UserDefinedClass 有一个引用成员变量。引用成员在构建后不能被重新绑定(bind),所以默认情况下该类是不可复制赋值的,这意味着它们的 vector 也不能被复制赋值。

您可以复制构造来创建项目的新拷贝,或者根据您的需要,您可以创建自己的复制赋值运算符,对引用成员执行不同的操作。

关于c++ - 我是否必须显式地编写一个复制构造函数来将一个对象 vector 复制到另一个对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com