【发布时间】:2021-12-02 08:11:34
【问题描述】:
我正在解决 8 个皇后拼图(在棋盘上放置 8 个皇后而不会发生冲突)并创建了一个类 Square。现在我认为这个类应该是2个子类Queen和Empty的父亲。
还有一个类:Chessboard,它包含一个双向数组,我想要的是在打印时我将有 8 个Q(Queens)和 56 个E(空见代码)。
这些是类(我不会全部写出来):
class Square{
int x;
int y;
public :
Square() {};
Square(int ,int);
bool isAvaible();
void swapStatus();
virtual void printValue();
void setCoord(int,int);
int getX();
int getY();
};
void Square::printValue(){
std::cout << "S ";
};
#include "square.hpp"
class Queen : public Square{
public:
...
virtual void printValue();
...
};
void Queen::printValue(){
std::cout << "Q ";
}
#include "Square.hpp"
class Empty : Square {
public:
...
virtual void printValue();
...
};
void Empty::printValue(){
std::cout << "E ";
}
一开始Chessboard中的所有元素都是Square,当添加一个女王时,Square必须被Queen替换。
我就是这样做的:
...
std::vector<std::vector<Square> > squares;
...
void Chessboard::setQueen(int x, int y){
squares[x][y]=Queen(x,y);
}
我使用这种方法在棋盘上设置 8 个皇后,当打印所有方格时,这是输出:
S S S S S S S S
S S S S S S S S
S S S S S S S S
S S S S S S S S
S S S S S S S S
S S S S S S S S
S S S S S S S S
S S S S S S S S
而不是:
Q S S S S S S S
S Q S S S S S S
S S Q S S S S S
S S S Q S S S S
S S S S Q S S S
S S S S S Q S S
S S S S S S Q S
S S S S S S S Q
有什么建议吗?
【问题讨论】:
标签: c++ inheritance