class ChessPiece
{
public:
ChessPiece();
virtual ~ChessPiece();
virtual bool movePiece() = 0;
};
和这个班级
class Pawn: public ChessPiece
{
public:
Pawn();
virtual ~Pawn();
bool movePiece();
};
在我的主要人物中我试图创建一个二维ChessPiece数组,但因为它的抽象,它给了我一些问题。
我试过这个
ChessPiece** board = new ChessPiece[8][8];
或
ChessPiece*** board = new ChessPiece*[8];
但它似乎不起作用.. 任何帮助将不胜感激 谢谢!
答案 0 :(得分:4)
您的董事会必须指向ChessPiece
,每个部分单独分配。董事会总是8x8,所以没有理由用new
分配它。代替:
ChessPiece * board[8][8];
然后像:
for (int i = 0; i < 8; ++i) {
board[1][i] = new Pawn();
}
board[0][0] = new Rook();
board[0][1] = new Knight();
// etc...
(编辑:使用每种作品类型的固定大小数组删除了一个实现,因为它可以将棋子升级为其他作品类型。)
当然,您可以以不同方式排列数据。您应该将所有游戏数据分组到ChessGame
类或结构中。您可以编写一个仅包含一个播放器片段的PlayerPieces
课程,然后将其中两个放入ChessGame
。有很多可能性 - 最终取决于你自己的风格和偏好。