C++ shared_ptr 发布顺序

C++ shared_ptr order of release

在我的代码中,我有

void Test(){
   std::shared_ptr<A> a = std::shared_ptr<A>(new A());
   std::shared_ptr<B> b = std::shared_ptr<B>(new B(a->getSomething());
}

问题是,ab 之前发布,但是在 b 发布期间我需要来自 a 的东西,这是通过 [=16= 获得的].我无法更改 getSomething 方法。

我可以更改(设置)释放共享指针的顺序吗?

假设你把原题中对象的顺序颠倒了(否则题目没有任何意义),你不需要改变释放的顺序,而是应该使用 [= 的别名形式13=]构造函数。类似的东西:

std::shared_ptr<B> b(a, a->getSomething());