shared_ptr/weak_ptr
允许在对象上保留弱引用,但我无法阻止收到弱引用的人将其转换并将其存储为共享对象。所以我失去了对对象生命周期的控制。unique_ptr
可以控制对象的生命周期,但没有弱引用机制。
我找不到同时拥有生命周期控制和弱引用优势的标准方法。我不敢相信我是唯一遇到这个问题的人。
标准或 boost 中是否有任何允许这种行为的内容?
或者是否有一种模式允许这样做而无需重写完整的 smart_ptr
类?
最佳答案
如果要控制生命周期,那不是弱指针。
弱指针可以升级为共享指针。因此,如果您不想共享所有权,则需要传递引用/原始指针。
您可以通过包装一个 weak_ptr
并且不暴露整个接口(interface)来创建您自己的一种限制访问的 observer_ptr。然而,这在多线程设置中很难保证安全(可以说是 shared_ptr
蓬勃发展的唯一设置)。
关于c++ - 有没有办法在对象上保持弱引用并控制它的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190407/