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



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

我有一个程序,我想演示如何从一个类方法返回一个二维数组。我正在阅读我的课本,它说"get"方法使它们const,这样程序员就不会无意中对私有变量进行更改。

好了,这就是我为一个[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*之前,而所有的const使用的例子在get方法我找到在线和在书中只有在行的末尾有const),为什么它工作?我试着做char (* getArray1())[10] const;但这不起作用,编译器抱怨它希望在const之前有{,但这不是我想做的。

我也知道,如果这是一个1D数组,它将只是简单地:

char* getArray() const;

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

我看过这里的其他示例,我也意识到这可能返回所谓的"衰减数组",以及其他可能的不良编码技术等。

但是如果我做对了,让我知道。如果没有,让我知道你的想法。

谢谢

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

相关内容

  • 没有找到相关文章

最新更新