指向std :: unique_ptr的内容

时间:2016-08-11 16:35:55

标签: c++ c++11 unique-ptr raw-pointer

我有一个std::unique_ptr和另一个原始指针。我希望原始指针指向unique_ptr的内容而没有任何所有权。它是只读关系:

auto bar=std::make_unique<foo>();
auto ptr=bar.get();// This may point to another value later

这不好吗?还有其他选择吗?

注意:真实的例子比较复杂。他们不属于同一类。

2 个答案:

答案 0 :(得分:27)

不,它不错,直到标准库包含proposed std::observer_ptr,它是 表达非拥有观察者的惯用方式。< / p>

答案 1 :(得分:26)

如果你可以保证 A) bar的生命周期超过ptr的生命周期,并且 B)那么没有程序员/重构将在任何时候写delete ptr;,然后这是完全正常的,并且可能适用于需要在没有所有权的情况下传递指针的任何情况。

如果无法保证这两个条件,您应该使用std::shared_ptrstd::weak_ptr