Каков самый быстрый способ преобразования std::shared_ptr>?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Каков самый быстрый способ преобразования std::shared_ptr>?

Сообщение Anonymous »

Предположим, класс D является производным от класса B. Как лучше всего преобразовать std::shared_ptr в std::shared_ptr? Решение не должно увеличивать/уменьшать счетчик std::shared_ptr и не должно копировать std::unique_ptr.
Наивный подход не работает. :

Код: Выделить всё

#include 

struct B {
virtual void msg() {
printf("BASE\n");
}

virtual ~B() = default;
};

struct D: B {
D() = default;

void msg() override {
printf("DERIVED\n");
}
};

int main() {
std::shared_ptr derivedPtr = std::make_shared(std::make_unique());
std::shared_ptr basePtr = static_cast(std::move(derivedPtr));
basePtr->get()->msg();
}
Компилятор говорит, что этот static_cast невозможен.

Подробнее здесь: https://stackoverflow.com/questions/793 ... nique-ptrt
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»