Я столкнулся со следующей ситуацией:Как обрабатывать возвращение абстрактных объектов
class Base{
virtual void Stuff() = 0;
};
class ConcreteA : public Base{
void Stuff() {};
};
class ConcreteB : public Base{
void Stuff() {};
};
class Context {
Base exec() {
ConcreteA conc_a();
return a;
}
};
Конечно компилятор дает мне ошибку, так как Base
является абстрактным. Однако мне нужно, чтобы exec()
возвращал базовый тип. Я знаю, что могу сделать компилятор счастливым с помощью указателей или ссылок, но поскольку объект ConcreteA создается в exec()
, возврат по значению - лучший способ избежать оборванных ссылок или указателя с неопределенным правом собственности.
Есть ли способ избежать использования указателей или ссылок для обработки таких ситуаций?
Нет никакого способа избежать ссылок или указателей, если вы хотите вернуть «базовый» тип. –
'std :: unique_ptr'? –