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/