指向std::unique_ptr的内容



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

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

这不好吗?还有别的办法吗?

:实际示例更复杂。他们不在一个班。

不,它还不错,直到标准库合并了提议的std::observer_ptr,它才是表示非拥有的观察者的惯用方式。

如果您可以保证A) bar的生命周期将超过ptr的生命周期,并且B)没有程序员/重构将在任何时候编写delete ptr;,那么这是非常好的,并且对于任何需要传递没有所有权的指针的情况都是理想的。

如果不能保证这两个条件,您可能应该使用std::shared_ptrstd::weak_ptr

相关内容

  • 没有找到相关文章

最新更新