Возник такой вопрос: у меня есть главный класс 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*
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Начал писать свой оптимизатор-транслятор кода for funЯ новичок в c++ и ЯВУ
У меня есть проект, который содержит в себе два других (использую subdirs)Вызовом нужных функций из подпроектов занимается класс MainWindow, который...