在我的代码中,我有
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
方法。
我可以更改(设置)释放共享指针的顺序吗?
答案 0 :(得分:2)
假设您颠倒了原始问题中对象的顺序(否则,问题没有任何意义),您不需要更改发布顺序,而应该使用shared_ptr构造函数的别名形式。这样的事情:
std::shared_ptr<B> b(a, a->getSomething());