我正在为自己的类(class)制作战舰游戏,而我正在使用的一个类中的get函数遇到一些问题。我的游戏的基本思想是创建一个2D 10X10数组,称为网格,并用空指针填充以表示棋盘。我创建了2个类(class),分别是“董事会”和“船舶”。网格数组的类型为Ship,我使用一种算法随机填充Ships。我使用Board类访问网格数组和hits数组(用于跟踪点击数)。
但是我无法弄清楚getShips函数如何返回网格数组。 hits数组只是 bool(boolean) 值,所以很容易,但是我对C++不够熟练,无法使getShips函数正确返回grid数组,这是Ship指针类型。我将不胜感激任何帮助。
class Board
{
private:
Ship *grid[10][10];
bool hits[10][10];
public:
// get functions
Ship *getShips()
{
return grid;
}
bool getHits()
{
return hits;
}
};
我还想知道是否有可能通过调用
getShips
函数来操纵其他函数中的数组。就像是:for (int x=0; x<10; x++)
{
for (int y=0; y<10; y++)
{
board.getShips()[x][y]=nullptr;
}
}
最佳答案
好。首先,我将修改getShips和getHits函数。有这样的事情:
Ship *getShips(int x, int y){ return grid[x+y*10]; }
bool getHits(int x, int y){return hits[x+y*10];}
这样,您将简化代码并避免一些错误。
当您声明多维数组时,例如
Ship *grid[10][10];
bool hits[10][10];
您基本上是在声明指向船的指针的指针。
如果您使用C++编写,我将尝试使用最少数量的指针。尝试改用STL容器。他们为您执行自动内存管理,这可能会节省您一些时间。
关于c++ - C++从get函数内部访问和操纵2D指针数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22814808/