すべての動きが有効である必要があるため、ボードゲームを作成しようとしています。そのため、ボードのコピーを作成して動きを作り、その動きが有効かどうかを確認できるようにします。
まず、ボード上のすべての位置を 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;
}
}
}
}
ボードの私のコンテナは次のとおりです。
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);
エラーや警告なしでコンパイルします。どちらを使用すればよいですか?