деструктор — C ++ shared_ptr порядок выпуска

В моем коде у меня есть

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

Решение

Предполагая, что вы изменили порядок объектов в исходном вопросе (в противном случае вопрос не имеет никакого смысла), вам не нужно менять порядок выпуска, вместо этого вы должны использовать псевдоним конструктора shared_ptr. Что-то вроде того:

std::shared_ptr<B> b(a, a->getSomething());
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]