我有一个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_ptr
和std::weak_ptr
。