0

在我的代码中,我有

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方法。

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

4

1 回答 1

2

假设您颠倒了原始问题中对象的顺序(否则,该问题没有任何意义),您不需要更改发布顺序,而是应该使用 shared_ptr 构造函数的别名形式。像这样的东西:

std::shared_ptr<B> b(a, a->getSomething());
于 2017-01-31T19:02:12.860 回答