我正在尝试制作棋盘游戏,因为每一步都必须有效,所以我正在制作棋盘的副本并进行移动,以便我可以验证该移动是否有效。
首先,我将棋盘上的所有位置初始化为 0(遍历棋盘并将每个 p 设置为 0
pair<int, int> p(y, x);
board_[p] = 0;
这是抄板法
void Board::copy(Board & gb) {
for (int y = MIN_Y; y <= MAX_Y; ++y) {
for (int x = MIN_X; x <= MAX_X; ++x) {
pair<int, int> p(y, x);
if (gb.board_.at(p) != 0) {
board_[p] = new Pieces(*gb.board_.at(p)); // **where I am confused**
} else {
board_[p] = 0;
}
}
}
}
我在 Board 中的容器是:
map<pair<int,int>, Pieces*> board_;
现在在一个游戏方法中,我复制了棋盘
unsigned int play(Board & b){
b.copy(*this);
}
我的问题:两者
board_[p] = new Pieces(*gb.board_.at(p)); //Pieces is a class I defined
和
board_[p] = gb.board_.at(p);
编译没有任何错误或警告。我应该使用哪一个?