c++ - 为什么引用 unique_ptr 会这样?

标签 c++ reference unique-ptr

vector<int> v1, v2;

/*1*/        vector<int> &someReference=v1;     //compiles
/*2*/        someReference=v2;         //compiles

vector<unique_ptr<int>> vec1, vec2;

/*3*/        vector<unique_ptr<int>> &otherReference=vec1;    //compiles
/*4*/        otherReference=vec2;     //ERROR

如果第 3 行和第 4 行都没有编译,我会理解,但第三行不会导致任何编译错误——显然第一次初始化引用并传递它没有问题;问题仅在我尝试第二次分配时出现。

我无法理解幕后发生的事情导致无法进行第二次作业。

最佳答案

这和引用无关,是不能复制的unique_ptr

unique_ptr<int> p1, p2;
p1 = p2; // error

因此,unique_ptr 的 vector 也不能被复制。

vector<unique_ptr<int>> vec1, vec2;
vec1 = vec2; // error

关于c++ - 为什么引用 unique_ptr 会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17818152/

相关文章:

通过引用传递的 java 函数原语

c++ - 遍历 unique_ptr vector 的 unique_ptr

c++ - serialize 不是 std::unique_ptr 的成员

c++ - 插入 std::vector 时 std::unique_ptr 的正确用法是什么

c - C指针的 "**&ptr"和 "2**ptr"是什么意思?

c++ - 使用 sqrt() 和 pow() 函数的不同结果

c++ - 在窗口中显示任何内容之前和抛光窗口之后无法进行介绍

C++使用字符串变量来调用其他东西并为其命名

c++ - 从方法返回指针

c++ - v8 设置 Handle<Value> 数组 howto?