Получение общего указателя на производный класс, когда базовый класс наследуется от enable_shared_from_this - PullRequest
3 голосов
/ 15 марта 2010

У меня есть класс B, который наследуется от A, который, в свою очередь, наследуется от enabled_shared_from_this. Теперь я хочу получить общий указатель на B из экземпляра B. shared_from_this вернет shared_ptr<A>, а не shared_ptr<B>. Должен ли я использовать boost::static_pointer_cast здесь? Или есть лучший способ?

Ответы [ 2 ]

1 голос
/ 20 марта 2010

Кажется, это правильный подход, поскольку тип известен во время компиляции.

1 голос
/ 15 марта 2010

Я думаю, в этом случае предпочтительнее использовать boost :: dynamic_pointer_cast ;

boost::shared_ptr<B> b = boost::dynamic_pointer_cast<B>(shared_from_this());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...