我有一个Game包含其他对象的类GameGrid:
Game.h
class Game
{
public:
Game(uint32_t GridSize);
private:
GameGrid _CurrentGrid;
}
Run Code Online (Sandbox Code Playgroud)
Game.cpp
Game::Game(uint32_t GridSize) : _CurrentGrid(GridSize)
{
}
Run Code Online (Sandbox Code Playgroud)
GameGrid.h
class GameGrid
{
public:
GameGrid(uint32_t GridSize);
void setGrid(const Grid& Grid);
const GameGrid::Grid getGrid(void) const;
private:
Grid _Grid;
}
Run Code Online (Sandbox Code Playgroud)
GameGrid.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;
}
Run Code Online (Sandbox Code Playgroud)
现在我有我的应用程序,它使用游戏类
Game* MyGame = new Game(4);
Run Code Online (Sandbox Code Playgroud)
如何为这个指向Game-Object的指针创建一个复制函数,以便我可以克隆该对象.
我已经尝试过赋值运算符
Game& operator=(Game const& Ref);
Game& Game::operator=(Game const& Ref)
{
if (&Ref != this)
{
this->~Game2048();
new (this) Game2048(Ref);
}
return *this;
}
Run Code Online (Sandbox Code Playgroud)
但是当我更改克隆时,这个解决方案不起作用,我的原始对象也发生了变化.
有人对我有暗示吗?
谢谢!
不要自己创建复制构造函数,让编译器为您完成,然后只使用对象:
Game MyGame{4};
Game gameClone = MyGame;
Run Code Online (Sandbox Code Playgroud)
这里没有理由使用原始指针.
| 归档时间: |
|
| 查看次数: |
842 次 |
| 最近记录: |