Подтвердить что ты не робот

Enable_shared_from_this и наследование

У меня есть тип, который наследуется от enable_shared_from_this<type>, и другой тип, который наследуется от этого типа. Теперь я не могу использовать метод shared_from_this, потому что он возвращает базовый тип и в методе определенного производного класса мне нужен производный тип. Действительно ли это просто построить shared_ptr из этого напрямую?

Изменить: В связанном вопросе, как я могу перейти от rvalue типа shared_ptr<base> к типу shared_ptr<derived>? Я использовал dynamic_cast, чтобы убедиться, что это действительно правильный тип, но теперь я не могу выполнить фактический ход.

4b9b3361

Ответ 1

Как только вы получите shared_ptr<Base>, вы можете использовать static_pointer_cast, чтобы преобразовать его в shared_ptr<Derived>.

Вы не можете просто создать shared_ptr непосредственно из this; это будет эквивалентно:

shared_ptr<T> x(new T());
shared_ptr<T> y(x.get()); // now you have two separate reference counts