В моем коде у меня есть
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
метод.
Могу ли я изменить (установить) порядок выпуска общих указателей?
Предполагая, что вы изменили порядок объектов в исходном вопросе (в противном случае вопрос не имеет никакого смысла), вам не нужно менять порядок выпуска, вместо этого вы должны использовать псевдоним конструктора shared_ptr. Что-то вроде того:
std::shared_ptr<B> b(a, a->getSomething());
Других решений пока нет …