我想要一个 unique_ptr 的向量作为我正在创建的类的成员。
class Foo {
[...]
private:
vector<unique_ptr<Bar>> barList;
}
但后来我开始收到来自VS2010编译器:
error C2248: 'std::unique_ptr<_Ty>::operator =' : cannot access private member declared in class 'std::unique_ptr<_Ty>'
以及下面的一些错误行,这些错误行深入探讨了 Microsoft 的实现std::_Copy_impl<>
...
我将成员声明更改为
vector<unique_ptr<Bar>>* barList;
它可以编译。但我不禁想,为什么我不能按照自己原本想要的方式去做呢?为了笑,我尝试了这个,效果很好:
vector<Bar> barList;
但现在我失去了便利unique_ptr
。我想要我的蛋糕,我也想吃它!
这里的问题是,您的代码在某个地方尝试调用“复制赋值”运算符Foo
.
这会导致编译器尝试生成一个复制赋值运算符,该运算符调用 的所有子对象的复制赋值运算符Foo
。最终,这导致尝试复制unique_ptr
,这是不可能的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)