Так что недавно я выучил несколько шаблонов и даже подозревал, что он может заменить полиморфизм, когда дело доходит до преимуществ времени выполнения, поскольку я ненавижу, когда он превосходит полиморфизм в том, что с ценой более длительного времени компиляции, это правда между прочим?
Теперь давайте разберемся, скажем, у меня есть вектор полиморфных c игровых объектов с базовым классом Game_Object:
Class Game_Object
{
public:
Game_Object() = default;
virtual ~Game_Object() = default;
virtual void show() = 0;
//----------- more functions here ---------//
private:
//----------- Members here ---------//
}
также у меня есть несколько производных классов, возможно производных от производных классов например, так:
Class Player : public Game_object
{
public:
Player();
virtual ~Player();
virtual void show() override;
//----------- more functions here ---------//
private:
//----------- Members here ---------//
}
и вот пример класса, который наследуется дважды:
Первый - это наследование:
Class Obstacle : public Game_object
{
public:
Obstacle();
virtual ~Obstacle();
virtual void show() override;
//----------- more functions here ---------//
private:
//----------- Members here ---------//
}
, а второй - это наследование:
Class Wall : public Obstacle
{
public:
Wall();
virtual ~Wall();
virtual void show() override;
//----------- more functions here ---------//
private:
//----------- Members here ---------//
}
теперь я держу эти и более членов в векторе, подобном этому:
std::vector<Game_Object*> m_objects:
или, возможно, даже так:
std::vector<std::unique_ptr< <Game_Object*> > m_objects:
мой вопрос, как мне сделать эту общую c базу данных игровых объектов с шаблонами?