gpt4 book ai didi

c++ - 如何将 unique_ptr 的 vector 声明为类数据成员?

转载 作者:可可西里 更新时间:2023-11-01 16:30:23 26 4
gpt4 key购买 nike

我想要一个 unique_ptr vector 作为我正在创建的类的成员。

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,这是不可能的操作。

关于c++ - 如何将 unique_ptr 的 vector 声明为类数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988303/

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