嗨,我是编程新手,我正在进入第二学期,所以请耐心等待我的问题,因为这不是作业,我只是想看看有些事情是如何运作的。
我有一个我制作的程序,我想演示如何从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])
我已经看过这里的其他例子,我也知道这可能会返回所谓的“衰变数组”,其中包括可能的错误编码技术等。
但如果我说得对,请告诉我。如果没有,请告诉我你的想法。
感谢
答案 0 :(得分:0)
尝试typedef char const (*array_t)[10]; array_t getArray() const
。