指向 std::unique_ptr 的内容

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

这很糟糕吗?还有其他选择吗?

注意:真实的例子比较复杂。他们不在同一个class.

不,这还不错,在标准库包含 proposed std::observer_ptr 之前,它是 表达非拥有观察者的惯用方式。

如果你能保证A) bar的生命周期会超过ptr的生命周期,AND B) 没有 programmer/refactoring 会在任何时候写 delete ptr; ,那么这非常好并且可能是您需要在没有所有权的情况下传递指针的任何情况的理想选择。

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