Возник такой вопрос: у меня есть главный класс Figures, от которого я унаследовал Circle,Square,Triangle и т.д. Теперь хочу создать QVector для хранения всех объектов, которые наследовал от Figures.
Подскажите пожалуйста, как правильно объявить QVector и использовать его(обращение к конкретному элементу)? И корректно ли будет так делать?
Вам нужно объявить вектор указателей на Figures, записывая в эти указатели адреса объектов конкретных фигур:
QVector<Figures*> figures;
Добавить элемент при помощи метода push_back, например:
figures.push_back(new Circle(params));
figures.push_back(new Triangle(params));
figures.push_back(new Square(params));
Использовать это можно примерно так:
for(int i = 0; i < figures.size(); i++)
figures[i]->move(10, 10); // если метод move объявлен в Figures
Следует отметить, что в этом случае вы сможете использовать только те методы, о которых "знает" класс Figures (реализованные в нем или виртуальные). Чтобы использовать методы конкретной фигуры, например радиус для окружности, вам нужно будет сделать преобразование типа указателя из Figures* в Circle*.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости