Переопределение функции
Пишу шахматы на С++ и использую 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 шт):
Отвечаю на свой вопрос. Как подсказал в комментариях пользователь @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);