У меня есть два класса A, B, которые наследуются от абстрактного базового класса Abs. Я хотел бы создать список инициализации, содержащий их обоих. Я хотел бы повторить этот список с циклом foreach.
class Abs {
public:
virtual ~Abs() = default;
virtual void f() = 0;
};
class A : public Abs {
virtual void f() override;
};
class B : public Abs {
virtual void f();
};
int main() {
A a;
B b;
const Abs& a_abs = a;
const Abs& b_abs = b;
for (const auto& abs : {a_abs, b_abs})
{
}
return 0;
}
Сбой компиляции цикла for:
ошибка: невозможно выделить объект абстрактного типа "Абс"
Почему он пытается выделить тип Abs?
Как я могу преодолеть это?
Спасибо:)