Hum*_*awi 16 c++ unique-ptr c++11 raw-pointer
我有一个std::unique_ptr和另一个原始指针.我希望原始指针指向unique_ptr没有任何所有权的内容.它是只读关系:
auto bar=std::make_unique<foo>();
auto ptr=bar.get();// This may point to another value later
Run Code Online (Sandbox Code Playgroud)
这不好吗?还有其他选择吗?
注意:真实的例子比较复杂.他们不在同一个班级.
Rei*_*ica 27
不,它并不坏,直到标准库包含所提出的std::observer_ptr,它是表达非拥有观察者的惯用方式.
Xir*_*ema 26
如果你可以保证A) bar的生命周期将超过生命周期ptr,并且B)任何编程器/重构都不会delete ptr;在任何时候写入,那么这是完全正常的,并且可能适用于任何你需要传递指针的情况所有权.
如果无法保证这两个条件,您可能应该使用std::shared_ptr和std::weak_ptr.
| 归档时间: |
|
| 查看次数: |
1919 次 |
| 最近记录: |