C++ Can';t从对象数组交换两个对象
我目前正在制作一个Line3类型的游戏,我在尝试交换阵列中的两个对象时遇到问题。我的游戏有两个类:Gem类,你必须排队才能获得积分;Board类,包含Gem数组[6][6] 问题在于我的交换方法。在方法内部,我有一些cout来帮助我查看,交换实际上已经完成,但我认为我是在拷贝上进行的,因为在那之后,当我刷新我的板时,宝石不会互换。这是我的代码,请随时提出建议: Board.hC++ Can';t从对象数组交换两个对象,c++,arrays,C++,Arrays,我目前正在制作一个Line3类型的游戏,我在尝试交换阵列中的两个对象时遇到问题。我的游戏有两个类:Gem类,你必须排队才能获得积分;Board类,包含Gem数组[6][6] 问题在于我的交换方法。在方法内部,我有一些cout来帮助我查看,交换实际上已经完成,但我认为我是在拷贝上进行的,因为在那之后,当我刷新我的板时,宝石不会互换。这是我的代码,请随时提出建议: Board.h #pragma once #include "Gem.h" class Board { pub
#pragma once
#include "Gem.h"
class Board
{
public:
Board();
~Board();
void gameLoop();
void refreshGameGrid();
void refillGameGrid();
void checkIfStacks();
void swapGems(Gem& p_firstGem, Gem& p_secondGem);
Gem getGem(int line, int column);
private:
Gem m_gameGrid[6][6];
};
#pragma once
#include "gemMania.h"
class Gem
{
public:
Gem();
~Gem();
// Getters
const string& getRepresentation();
const string& getColor();
const string& getPosition();
int getNumberOfGems();
// Setters
void setColorAndRepr(const string&, const string&);
//Methods
void switchWith(Gem&);
void destroyGem();
void renewGem();
private:
string m_representation;
string m_color;
string m_position;
static int numberOfGems;
};
Board.CPP
// Swap the position of two Gems on the Board.
void Board::swapGems(Gem& p_firstGem, Gem& p_secondGem)
{
cout <<"Avant : " << p_firstGem.getRepresentation() << " | " << p_secondGem.getRepresentation() << endl;
p_firstGem.switchWith(p_secondGem);
cout << "Après : " << p_firstGem.getRepresentation() << " | " << p_secondGem.getRepresentation() << endl;
}
Gem.cpp
// Switch the attrbutes of two gems, hence swaping the two of them.
void Gem::switchWith(Gem& p_otherGem)
{
swap(this->m_color, p_otherGem.m_color);
swap(this->m_representation, p_otherGem.m_representation);
}
提前感谢所有愿意花时间帮助我的人 我猜呢?通过值将
Board
的实例传递到某个地方。我构造Board对象的唯一地方是main:Board gameBoard;gameBoard.gameLoop();您省略了将对象传递给函数的调用getGem
按值返回Gem
;你正在修改这些副本。那么我应该更改什么?我总是很难理解指针,比如我应该在某处添加一个*吗?