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