我有一个唯一指针向量。其中,我希望一个不占用其指向对象的所有权。怎么做?
vector<unique_ptr<int>> v;
v.push_back(make_unique<int>(10));
unique_ptr<int> p(new int(20)); // add it to v but keep p take the ownership.
问题来自以下案例。我有一个由 GUI 树小部件表示的树结构数据。父节点通过使用 获取其子节点的所有权vector<unique_ptr<T>>
。但有一个例外。我有一个常见的单例数据,并且想将其附加到树中以获取友好的用户界面。存在冲突,因为 sigleton 也取得了所有权。使用 share_ptr 有效,但会牺牲一些性能。
感谢大家的回答、意见和建议。这可能是一个设计缺陷。也许我需要一个用于特殊父节点的新类vector<unique_ptr<T>>
(对于其他节点),shared_ptr
甚至是一个原始指针(对于单例)来处理异常。