Скажем, у вас был класс
class Foo
{
// stuff
};
, и у вас была производная версия этого класса
class Bar : public Foo
{
// extra stuff
};
, и у вас был класс с вектором указателей на Foo
s .
class FooManager
{
public:
std::vector<Foo*> objects;
}
Не могли бы вы вывести FooManager
в BarManager
, где BarManager
имеет вектор указателей на Bar
?
Если вы сделали что-то вроде
class BarManager : public FooManager
{
std::vector<Bar*> objects;
}
Тогда BarManager
просто будет скрывать объекты FooManager
, и я бы не хотел этого дополнительного члена. Я мог бы просто указать указатели sh Bar
на объекты FooManager
, и это сработало бы, но тогда, если бы я хотел использовать объект extra stuff
, Bar
, мне нужно было бы привести все Foo*
с в Bar*
с, и тогда возникнут проблемы, если я случайно вставлю указатель Foo
в объекты.
Есть ли лучшее решение?
РЕДАКТИРОВАТЬ: я пытаюсь различные методы организации игровых классов. Все объекты получены из GameObject с чисто виртуальными методами Update () и Draw (). Все объекты принадлежат менеджеру этого типа, а затем все эти менеджеры принадлежат одному «Менеджеру менеджеров», который будет вызывать методы Update () и Draw () для менеджеров, которые в свою очередь вызывают Update () и Draw (). методы для объектов.