C++ 从 get 函数中访问和操作二维指针数组

标签 c++ arrays function class pointers

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

相关文章:

C++ ZLib GZipStream 解压缩 NULL 终止

php - 将MySQL表与多维数组相关转换

javascript - .map() 仅返回数组中的最后一个对象

java - 二分查找中的最大键比较 (1+log(n)) 为何不是 log(n)?

c++ - 创建和使用指向友元类方法的 func 指针

javascript - 函数前面的感叹号有什么作用?

c++ - 使用递归的非二叉树不会创建整棵树

C++字符串问题

c++ - boost 反序列化错误

php - if mysql查询中的参数