私はチェスゲームを開発しています。そこで、Piece という抽象クラスを作成し、実際のピースはこのクラスを実装します。Pawn、Rook などの具象クラスがあります。
問題は、2 つの部分を比較するためにインターフェイスにequalメソッドが必要なことです。私はポリモルフィックな方法、つまりピースを任意のピースと比較できる方法が欲しかったので、それに問題があります。問題は、「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;
};