Моя проблема заключается в следующем:
Я создаю игру в шахматы на C ++, и существует базовый класс Figure
, который содержит функциональность, общую для всех фигур, с виртуальной функцией checkMove
, которая переопределяется индивидуально для каждой фигуры (как, естественно, для каждой фигуры). движется по разным правилам). Шахматная доска - это двумерный массив указателей на Figure
с (пустые квадраты - просто нулевые указатели).
Дело в том, что я хотел бы, чтобы Queen
наследовал Rook
и Bishop
, так как он представляет собой смесь как для всех намерений, так и для целей, вместо того, чтобы писать свою собственную ненужную длинную переопределение checkMove
.
И тут возникает моя проблема: в базовом классе Figure
есть фундаментальные функции определения, каким персонажем будет представлена фигура в консоли, какой команде она принадлежит и т. Д. Я бы хотел, чтобы королева наследовать только один экземпляр этих функций.
Однако я бы хотел, чтобы королева унаследовала функцию checkMove
дважды - один раз от Rook
и один раз от Bishop
, чтобы просто вызывать оба в своей собственной checkMove
версии ..
Я попробовал некоторые решения, также поиграл с Rook
и Bishop
, унаследовавшими класс Figure
виртуально, но я не могу собрать все воедино. Я новичок в концепции полиморфизма, поэтому не могу найти правильную логику для реализации этой функциональности. Что было бы хорошим подходом?