static_cast с повышением:: shared_ptr?

Если у вас действительно такое поведение, это, вероятно, означает, что нулевой символ отсутствует в formattedTime , и случайно n находится сразу после стека и вводит нулевой символ своим присутствием, или эквивалент из-за данных, сохраненных в стеке

72
задан peterchen 12 August 2014 в 09:52
поделиться

4 ответа

Используйте boost::static_pointer_cast:

boost::shared_ptr<Base> b(new Derived());
boost::shared_ptr<Derived> d = boost::static_pointer_cast<Derived>(b);
105
ответ дан peterchen 24 November 2019 в 12:40
поделиться

Существует три оператора броска для интеллектуальных указателей: static_pointer_cast, dynamic_pointer_cast, и const_pointer_cast. Они находятся любой в пространстве имен boost (обеспечены <boost/shared_ptr.hpp>) или пространстве имен std::tr1 (обеспеченный или Повышением или реализацией Вашего компилятора TR1).

22
ответ дан Michael Kristofik 24 November 2019 в 12:40
поделиться

Как комментарий: если Получено на самом деле происходит из Основы, то необходимо использовать dynamic_pointer_cast, а не статические броски. Система будет иметь шанс обнаружения, когда/если Ваш бросок не будет корректен.

3
ответ дан David Rodríguez - dribeas 24 November 2019 в 12:40
поделиться

Стоит упомянуть, что существует разница в количестве операторов приведения, предоставляемых Boost и реализациями TR1.

TR1 не определяет третий оператор const_pointer_cast ()

2
ответ дан 24 November 2019 в 12:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: