访问 Matrix 类 (C++) 中的二维数组 (Visual Studio 2010)

Posted

技术标签:

【中文标题】访问 Matrix 类 (C++) 中的二维数组 (Visual Studio 2010)【英文标题】:Accessing the 2D array in a Matrix class (C++) (Visual Studio 2010) 【发布时间】:2016-02-08 01:02:51 【问题描述】:

我是一个相对较新的编程学生,对 C++ 非常陌生,所以在我努力解决这个问题时请多多包涵。

我正在尝试使用一些基本功能来创建一个 Matrix 类来更改它。在 Matrix 类中创建的对象应该是一个 100x100 的 2D 浮点数组。我应该能够将此数组中特定位置的值更改为另一个值。相关代码如下:

    //in the .h file
    class MatrixC
    
    private:
       float matrix[100][100];

    public:
       void initializeMatrix(MatrixC);
       void printMatrix(MatrixC);
       void setValue(MatrixC, float, int row, int column);
       float getValue(MatrixC, int row, int column);
    

   //in the .cpp file
   void setValue(MatrixC matrix, float value, int row, int column)
   
      matrix[row][column] = value; //ERROR LINE
   

我在上面指示的行中收到以下错误,行中的第一个括号突出显示:“MatrixC 矩阵 - 没有运算符 '[]' 与这些操作数匹配。”

我也收到关于同一行中的“=”的此错误。

经过一番谷歌搜索后,我终生无法弄清楚如何解决有关 “[]”。关于“=”的问题似乎是因为编译器认为“matrix[row][column]”和“value”是不同的数据类型,但两者都指的是浮点数。我怀疑一旦“[]”的问题得到解决,这个问题就会得到解决。

我是否不正确地访问了 MatrixC 类中的二维数组?如果是这样,我不知道如何正确地做到这一点。如果不是,我不知道问题是什么。

【问题讨论】:

【参考方案1】:

您将Matrix 对象用作数组,而他不是。 如果要使用 [] 运算符, 你应该超载它。 更多关于重载here

如果你不想重载操作符,你应该创建一个函数来返回你的实际数组成员(或者只是将它公开) 而不是改变价值。

顺便说一句,我认为您可能想要更改矩阵变量的所有函数签名,并获取指向对象的指针,这将允许实际更改,而不仅仅是发送对象的副本。 阅读更多关于参考和指针的信息。

【讨论】:

以上是关于访问 Matrix 类 (C++) 中的二维数组 (Visual Studio 2010)的主要内容,如果未能解决你的问题,请参考以下文章

删除动态分配的二维数组时发生错误?

如何在 C# 中为 Matrix 类初始化二维数组

C++ 练气期之二维数组与矩阵运算

在 C++ 中使用 sizeof() 循环二维数组 [重复]

在 C++ 中表示二维数组的最佳方法,其大小在运行时确定

我可以使用 C++ 中的指针访问二维数组的元素吗?