我有一个既不可复制又不可分配的class A .现在,我想要另一个class B来保存A对象的向量。同样清楚的是,B拥有这些对象的所有权。
在我看来,(至少)有三种选择:
vector<A>vector<A*>vector<shared_ptr<A> >1.由于A不可复制、可构造/可分配而不能工作,这是对的吗?
我不喜欢2,因为我必须确保再次删除指针。
如果我使用3,我觉得这并不能清楚地表示B是A对象的所有者。我还遇到了这样的问题:如果我希望B的用户删除这个向量中的指针,他们需要传递他们想要通过shared_ptr<A>删除的元素,对吗?
在这种情况下,什么才是干净的设计决策呢?这方面有什么好的参考资料吗?
发布于 2016-02-02 10:43:38
A需要与std::vector一起使用可转让复制和可复制构造,但从C++11 on来看,这在很大程度上取决于您需要在向量上使用的操作。unique_ptr吗?在这个选项上有一个不错的博客帖子。https://stackoverflow.com/questions/35151151
复制相似问题