1

嗨,我是编程新手,即将进入第二学期,所以请耐心等待我的问题,因为这不是作业,我只是想看看有些事情是如何运作的。

我有一个程序,我想演示如何从 Class 方法返回 2D 数组。我正在阅读我的教科书,它说“get”方法使它们成为常量,这样程序员就不会无意中对私有变量进行更改。

好的,这就是我想出的 [10][10] 二维字符数组的方法:

//private member is:
private:
      char array[10][10];

//method prototype
public:
      const char(* getArray()const )[10];

//and then the actual method itself
const char(* getArray()const )[10]
{
      return array;
}

这行得通,但我想知道这是否是正确的代码(我相信这不是因为它迫使我将 const 放在 char* 之前,而我在网上和书中找到的 get 方法中的所有 const 用法示例只有 const 在行尾),为什么它仍然有效?我试着做 char (* getArray1())[10] const; 但这不起作用,编译器抱怨它期望在 const 之前有一个 { ,但这不是我想要做的。

我也知道,如果这是一个一维数组,它只是:

char* getArray() const;

因为我测试了它并且它有效。我看到另一个网页说明了如何使用 1D 数组代替 2D 数组,所以我已经知道了,但是这基本上会创建一个 100 的新数组(数组 [100],基本上是数组 [10 * 10])

我在这里查看了其他示例,并且我也知道这可能会返回所谓的“衰减数组”,其中包括可能的错误编码技术等。

但如果我做对了,请告诉我。如果没有,请告诉我你的想法。

谢谢

4

1 回答 1

0

试试typedef char const (*array_t)[10]; array_t getArray() const

于 2013-05-28T03:30:38.870 回答