Наивный подход не работает. :
Код: Выделить всё
#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();
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... nique-ptrt
Мобильная версия