GameMaster* thisMaster
「クリーンな」コピーを維持しながら操作を実行できるように、のコピーを作成する必要があります。ただ、今のやり方は、 に変更を加えるとcopy
、それも変わりthisMaster
ます。
void Move::possibleMoves(GameMaster* thisMaster)
{
GameMaster* copy = new GameMaster(*thisMaster);
}
どうすればこれを修正できますか?
編集: コピー コンストラクターを作成しましたが、まだ同じ問題が発生しています。
GameMaster::GameMaster(const GameMaster& gm)
{
for(int i=0;i<GAMETILES;i++)
{
gameTiles[i]=gm.gameTiles[i];
}
players=gm.players;
vertLines=gm.vertLines;
horLines=gm.horLines;
turn = gm.turn;
masterBoard=gm.masterBoard;
lastLegal=gm.lastLegal;
lastScore=gm.lastScore;
}
GameMaster の完全なクラス定義は次のとおりです。
Class GameMaster
{
public:
GameMaster(void);
GameMaster(const GameMaster& gm);
~GameMaster(void);
//functions
private:
std::vector <Player*> players;
std::vector <Line> vertLines;
std::vector <Line> horLines;
Tile gameTiles [GAMETILES];
std::vector <std::string>colors;
std::vector <std::string>shapes;
int turn;
Board masterBoard;
bool lastLegal;
int lastScore;
};
コピー コンストラクターを使用すると、ボードが値を変更するという問題が発生します。コピーコンストラクターも必要ですか?