我正在开发一个国际象棋游戏。所以,我创建了一个名为 Piece 的抽象类,真正的部分实现了这个类,所以我有具体的类,比如 Pawn、Rook...
问题是:我需要在界面中使用相等的方法来比较两个部分。我遇到了问题,因为我想要一种 polimorfic 方法,即一种可以将一块与任何一块进行比较的方法。问题是我不能将“Piece o”声明为该方法的参数,因为 Piece 是一种抽象类型。我怎样才能在 C++ 中做到这一点?
我有以下代码:
class Piece
{
public:
virtual ~Piece();
virtual std::string name() = 0;
virtual Color color() const = 0;
virtual Type type() const = 0;
virtual Position position() const = 0;
virtual void moveToPosition(Position p) = 0;
virtual bool isValidMove(Position np, Board &b) = 0;
virtual vector<Movimento>& generateMoves(Board &t) = 0;
virtual bool equal(Piece &o) = 0;
};