gotoxy
@gotoxy

Возможно ли возвращать потомков абстрактного класса из функции?

Есть функция, которая в зависимости от входящего значения, создаёт объект определённого класса, который наследуется от абстрактного. Возможно ли как-то вернуть этот объект по ссылке на базовый класс, не создавая его через new и не по указатею?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
@MiiNiPaa
Да, можно.
#include <iostream>

struct Abstract
{
    virtual void print() = 0;
    virtual ~Abstract() = default;
};

struct Concrete : Abstract
{
    virtual void print() override
    {
        std::cout << "Concrete\n";   
    }

};

Abstract& foo()
{
   static Concrete c;
   return c;   
}

int main()
{
    foo().print();
}
coliru.stacked-crooked.com/a/cedf0ea1d25f9a12
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы