class Bishop : public ChessPiece {
public:
friend class Queen;
Bishop(string colorIn, string nameIn);
//isLegalMove for bishop
//implemented this function for queen
bool isLegalBishopMove(int xSrc, int ySrc, int xDest, int yDest);
//Can move along any diagnol
virtual bool isLegalMove(int xSrc, int ySrc, int xDest, int yDest) ;
};
class Queen : public ChessPiece {
public:
//friend class Bishop;
Queen(string colorIn, string nameIn);
//friend bool Bishop::isLegalBishopMove(int xSrc, int ySrc, int xDest, int yDest);
virtual bool isLegalMove(int xSrc, int ySrc, int xDest, int yDest);
};
我希望我的女王班級實施isLegalMove
能夠調用函數isLegalBishopMove
。我該如何解決這個問題?我嘗試使用朋友,但它沒有奏效。我不理解C++引用。如何調用其他課程的功能?
也許使用一箇中產階級:'class Diagnol_Mover:public ChessPiece;班女王:公共診斷_移動;'。 –
老實說,每個棋子的「邏輯」是一樣的,唯一的區別是他們可以移動的地方,這是數據。我會使用枚舉而不是子類。 –
@MooingDuck:如果沒有計算機分析需求,這是很好的建議,但如果有可能有不同的邏輯來評估這件作品的優勢/危險程度如何,可以選擇可能的最佳情侶動作等等。儘管如此,Benjamin's如果他在這個問題的模型問題上得到他的頭腦,不太可能會實現一些複雜化的事情...... –