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());
}
问题是,a
在 b
之前发布,但是在 b
发布期间我需要来自 a
的东西,这是通过 [=16= 获得的].我无法更改 getSomething
方法。
我可以更改(设置)释放共享指针的顺序吗?
假设你把原题中对象的顺序颠倒了(否则题目没有任何意义),你不需要改变释放的顺序,而是应该使用 [= 的别名形式13=]构造函数。类似的东西:
std::shared_ptr<B> b(a, a->getSomething());
在我的代码中,我有
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
的东西,这是通过 [=16= 获得的].我无法更改 getSomething
方法。
我可以更改(设置)释放共享指针的顺序吗?
假设你把原题中对象的顺序颠倒了(否则题目没有任何意义),你不需要改变释放的顺序,而是应该使用 [= 的别名形式13=]构造函数。类似的东西:
std::shared_ptr<B> b(a, a->getSomething());