我正在为我的类(class)作业制作一个战舰游戏,我在使用的其中一个类(class)中遇到了一些获取函数的问题。我的游戏的基本思路是创建一个 2D 10X10 数组,称为网格,其中填充了空指针以表示棋盘。我创建了 2 个类,Board 和 Ship。网格数组是 Ship 类型,我使用一种算法将 Ships 随机填充到数组中。我使用 Board 类访问网格数组和命中数组(我用它来跟踪命中)。
但是我无法弄清楚 getShips 函数如何返回网格数组。 hits 数组只是 bool 值,所以这很容易,但我对 C++ 不够熟练,无法使 getShips 函数正确返回网格数组,这是一种 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++ 从 get 函数中访问和操作二维指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22814808/