Add move constructor/operator=
This commit is contained in:
parent
0bcf77a56b
commit
1b49bc799b
@ -31,6 +31,39 @@ void GameState::clearUnits(){
|
||||
units.clear();
|
||||
}
|
||||
|
||||
GameState &GameState::operator=(const GameState &other) {
|
||||
if (this == &other)
|
||||
return *this;
|
||||
|
||||
clearUnits();
|
||||
for (const Unit *const unit : other.units)
|
||||
units.push_back(unit->clone());
|
||||
hero = other.hero;
|
||||
return *this;
|
||||
}
|
||||
|
||||
GameState::GameState(const GameState &other) : hero(other.hero) {
|
||||
clearUnits();
|
||||
for (const Unit *const unit : other.units)
|
||||
units.push_back(unit->clone());
|
||||
}
|
||||
|
||||
GameState &GameState::operator=(GameState &&other) noexcept {
|
||||
if (this == &other)
|
||||
return *this;
|
||||
clearUnits();
|
||||
|
||||
hero = std::move(other.hero);
|
||||
units = std::move(other.units);
|
||||
other.units.clear();
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
GameState::GameState(GameState &&other) noexcept : units(std::move(other.units)), hero(std::move(other.hero)) {
|
||||
other.units.clear();
|
||||
}
|
||||
|
||||
void GameState::draw(QGraphicsScene *scene) const {
|
||||
scene->clear();
|
||||
hero.draw(scene);
|
||||
@ -67,23 +100,6 @@ void GameState::updateCrashes() {
|
||||
}
|
||||
}
|
||||
|
||||
GameState &GameState::operator=(const GameState &other) {
|
||||
if (this == &other)
|
||||
return *this;
|
||||
|
||||
clearUnits();
|
||||
for (const Unit *const unit : other.units)
|
||||
units.push_back(unit->clone());
|
||||
hero = other.hero;
|
||||
return *this;
|
||||
}
|
||||
|
||||
GameState::GameState(const GameState &other) : hero(other.hero) {
|
||||
clearUnits();
|
||||
for (const Unit *const unit : other.units)
|
||||
units.push_back(unit->clone());
|
||||
}
|
||||
|
||||
int GameState::countToBeJunked() const {
|
||||
int numberDestroyed = 0;
|
||||
for (const Unit *const unit: units)
|
||||
|
@ -27,8 +27,14 @@ public:
|
||||
|
||||
~GameState();
|
||||
|
||||
// Copy
|
||||
GameState &operator=(const GameState &other);
|
||||
GameState(const GameState &other);
|
||||
|
||||
// Move
|
||||
GameState &operator=(GameState &&other) noexcept;
|
||||
GameState(GameState &&other) noexcept;
|
||||
|
||||
/*
|
||||
* Clear and redraw entire playing field
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user