【发布时间】:2017-06-17 08:27:25
【问题描述】:
在我的代码中,我有
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());
}
问题是,a 在b 之前发布,但在b 发布期间,我需要来自a 的东西,这是通过a->getSomethig() 获得的。我无法更改getSomething 方法。
我可以更改(设置)释放共享指针的顺序吗?
【问题讨论】:
-
这里的代码中,b的析构函数在a之前被调用。我没有看到问题
-
那你能分享一个MVCE吗?基本上,分享在
b之前销毁a的代码,以便我们更好地了解您的问题 -
在 B 中持有指向 A 的共享指针
标签: c++ destructor shared-ptr lifetime order-of-execution