Enable_shared_from_this и наследование
У меня есть тип, который наследуется от enable_shared_from_this<type>
, и другой тип, который наследуется от этого типа. Теперь я не могу использовать метод shared_from_this, потому что он возвращает базовый тип и в методе определенного производного класса мне нужен производный тип. Действительно ли это просто построить shared_ptr из этого напрямую?
Изменить:
В связанном вопросе, как я могу перейти от rvalue типа shared_ptr<base>
к типу shared_ptr<derived>
? Я использовал dynamic_cast, чтобы убедиться, что это действительно правильный тип, но теперь я не могу выполнить фактический ход.
Ответы
Ответ 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