C ++使用类方法返回2d数组

时间:2013-05-28 03:19:08

标签: arrays class object char dimensional

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

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

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

//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 *之前,而所有的const使用的例子都在我在线找到的get方法中在书上只有const的最后一行)为什么它仍然有效?我试过做char(* getArray1())[10] const;但这不起作用,并且编译器抱怨它期望{在const之前,但这不是我想要做的。

我也知道,如果这是一维数组,那就只是:

char* getArray() const;

因为我测试了它并且它有效。我看到另一个网页说明了如何使用一维数组代替二维数组,所以我已经意识到了这一点,但这基本上会产生一个100的新数组(数组[100],基本上是数组[10] * 10])

我已经看过这里的其他例子,我也知道这可能会返回所谓的“衰变数组”,其中包括可能的错误编码技术等。

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

感谢

1 个答案:

答案 0 :(得分:0)

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