![](/img/trans.png)
[英]Two std::unique_ptr pointing to the same object – undefined behaviour?
[英]Pointing to the content of 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_ptr
和std::weak_ptr
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.