Подскажите, пожалуйста, возможно ли в C++
следующее:
something.cpp:
#include <memory>
// Base - полный тип.
#include "Base.hpp"
std::unique_ptr<Base> create_derived()
{
// Derived - неполный тип, наследник класса Base.
class Derived;
return std::make_unique<Derived>();
}
Я хочу сконструировать std::unique_ptr<Derived>
и вернуть это в виде std::unique_ptr<Base>
. При этом, я бы не хотел включать заголовочный файл с полным описанием типа Derived
в единицу трансляции something.cpp
.
Но я получаю от компилятора сообщение примерно следующего содержания:
Отсутствует оператор =, соответствующий этим операндам: std::unique_ptr<Base> = std::unique_ptr<Derived>.
Я так полагаю, это происходит из-за того, что в данном случае тип Derived
является неполным?
Это невозможно по двум причинам,
1) Присваивание std::unique_ptr<Base>
значения std::unique_ptr<Derived>
невозможно без полного определения Derived, т.к. надо убедиться что Derived это наследник Base.
Об этом и говорит сообщение компилятора.
2) std::make_unique<Derived>()
делает new Derived()
, а это невозможно без полного определения Derived, т.к. должен быть виден конструктор по-умолчанию.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю стриминг сервис для вебинаровКогда пользователь заходит на страницу, он видит таймер и когда таймер подходит к концу - мне надо запустить...
Хотел сделать, чтобы при нажатии на стрелки класс -active переходил к предыдущей, либо к следующей кнопке slider__btnИ при нажатии на не активную кнопку...
Ребята как сделать такой hover эффект при наведение мыши?