我正在为自己的类(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/

10-11 23:06
查看更多