我需要制作一个副本,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;
};
使用复制构造函数,我仍然遇到 Board 更改值的问题。它也需要复制构造函数吗?