我需要复制 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:
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;
};
使用复制构造函数后,我仍然遇到棋盘数值更改的问题。它是否也需要一个复制构造函数?
GameMaster copy (*thisMaster);
呢? - chris