как заменить принцип полиморфизма шаблонами для создания базы данных c generi? - PullRequest
0 голосов
/ 21 апреля 2020

Так что недавно я выучил несколько шаблонов и даже подозревал, что он может заменить полиморфизм, когда дело доходит до преимуществ времени выполнения, поскольку я ненавижу, когда он превосходит полиморфизм в том, что с ценой более длительного времени компиляции, это правда между прочим?

Теперь давайте разберемся, скажем, у меня есть вектор полиморфных 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 базу данных игровых объектов с шаблонами?

...