Переопределение функции

Пишу шахматы на С++ и использую Qt. Для каждый фигуры сделал свой класс и унаследовал это все от своего класса figure. Переменные класса figure не создаю, создаю переменные наследованных классов (pawn, king и прочее) и добавляю их в вектор, например:

vector<figure> white = {Pawn1, Pawn2, King}.

Хочу реализовать функцию move, которая будет отвечать за перемещение фигур, соответственно у каждого класса - король, слон, пешка, ферзь и т.д. - разная функция. В файле figure.h:

virtual bool move();

В файле pawn.h:

bool move() override;

Собственно, проблема в чем: Когда в исполняемом файле пишу

white[1].move()

то, как вы уже поняли, срабатывает функция базового класса, в чем проблема?


Ответы (1 шт):

Автор решения: God

Отвечаю на свой вопрос. Как подсказал в комментариях пользователь @e.n.shirokov - переопределение функций было написано верно, для решения моей задачи было нужно заполнить вектор фигур не так:

vector<figure> white = {Pawn1, Pawn2, King}.

А вот так:

vector<figure*> white;
white.push_back(new pawn);
white.push_back(new pawn);
white.push_back(new king);
→ Ссылка