Подскажите, пожалуйста, возможно ли в 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, т.к. должен быть виден конструктор по-умолчанию.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Делаю стриминг сервис для вебинаровКогда пользователь заходит на страницу, он видит таймер и когда таймер подходит к концу - мне надо запустить...
Хотел сделать, чтобы при нажатии на стрелки класс -active переходил к предыдущей, либо к следующей кнопке slider__btnИ при нажатии на не активную кнопку...
Ребята как сделать такой hover эффект при наведение мыши?