Если сб.могу изменить название на что-то более понятное. Я был бы очень благодарен
Это моя текущая реализация:
std::vector<Zone<sf::CircleShape>*> allZones;
std::vector<Zone<sf::CircleShape>*> estates = initializer->initVillageEstates();
std::vector<Zone<sf::CircleShape>*> communityAreas = initializer->initCommunityAreas();
Я бы хотел иметь что-то вроде этого:
std::vector<Zone<sf::Shape>*> allZones;
std::vector<Zone<sf::CircleShape>*> estates = initializer->initVillageEstates();
std::vector<Zone<sf::RectangleShape>*> communityAreas = initializer->initCommunityAreas();
Где CircleShape
и RectangleShape
являются производными от базового класса Shape
.Я думаю, что это было бы возможно для вектора, если бы он был похож на универсальный тип для vector
, а не универсальный тип универсальный тип вектора.
Одно решение, котороеприходит в голову то, что я делаю Zone
не шаблонным классом, а как ZoneShape
и ZoneCircle : public ZoneShape
, ZoneRectangle : public ZoneShape
.
Таким образом, я мог бы что-то вроде этого:
std::vector<ZoneShape*> allZones;
std::vector<ZoneCircle*> estates = initializer->initVillageEstates();
std::vector<ZoneRectangle*> communityAreas = initializer->initCommunityAreas();
Я думаю, что это сработает, но я нашел шаблон более чистым для моих целей.Поэтому я должен выяснить, как это может с этим работать.