gpt4 book ai didi

C++ 复制对象

转载 作者:太空宇宙 更新时间:2023-11-04 15:31:15 24 4
gpt4 key购买 nike

我有一个 Game 类,其中包含另一个对象 GameGrid:

游戏.h

class Game
{
public:
Game(uint32_t GridSize);
private:
GameGrid _CurrentGrid;
}

游戏.cpp

Game::Game(uint32_t GridSize) : _CurrentGrid(GridSize)
{
}

游戏网格.h

class GameGrid
{
public:
GameGrid(uint32_t GridSize);
void setGrid(const Grid& Grid);
const GameGrid::Grid getGrid(void) const;
private:
Grid _Grid;
}

游戏网格.cpp

GameGrid::GameGrid(uint32_t GridSize)
{
uint32_t i = 0;
uint32_t j = 0;

_Grid.assign(GridSize, std::vector<unsigned int>(GridSize));

for (i = 0; i < GridSize; i++)
{
for (j = 0; j < GridSize; j++)
{
_Grid.at(i).at(j) = 0;
}
}
}

void GameGrid::setGrid(const GameGrid::Grid& Grid)
{
_Grid = Grid;
}

const GameGrid::Grid GameGrid::getGrid(void) const
{
return _Grid;
}

现在我有了我的应用程序,它使用游戏类

Game* MyGame = new Game(4);

我如何为这个指向游戏对象的指针创建一个复制函数,以便我可以克隆该对象。

我用赋值运算符试过

Game& operator=(Game const& Ref);

Game& Game::operator=(Game const& Ref)
{
if (&Ref != this)
{
this->~Game2048();
new (this) Game2048(Ref);
}

return *this;
}

但是这个解决方案不起作用,当我更改克隆时,我的原始对象也发生了变化。

有人给我提示吗?

谢谢!

最佳答案

不要自己创建复制构造函数,让编译器为你做,然后只使用对象:

Game MyGame{4};
Game gameClone = MyGame;

没有理由在这里使用原始指针。

关于C++ 复制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com