C++ |9 |错误:无效使用非静态数据成员';矩阵::行'|9 |错误:数组绑定在';]之前不是整数常量';代币|

C++ |9 |错误:无效使用非静态数据成员';矩阵::行'|9 |错误:数组绑定在';]之前不是整数常量';代币|,c++,matrix,operator-overloading,matrix-multiplication,ostream,C++,Matrix,Operator Overloading,Matrix Multiplication,Ostream,有人能帮我找出这个代码中的问题吗。我正在使用代码块17.12。 我正在尝试创建一个矩阵类,在该类中,我希望使用构造函数初始化矩阵,然后使用函数获取数组的成员。 然后重载“*”运算符,使两个输入的矩阵相乘。然后重载ostream以显示已经给定的矩阵作为输入或乘积(如“cout”) void Marix::setRowXColumn(int行,int列)。它应该是矩阵。如果您使用的是IDE,它应该警告您这些输入错误 setRowXColumn(int行,int列)应该是setRowXColumn(行

有人能帮我找出这个代码中的问题吗。我正在使用代码块17.12。 我正在尝试创建一个矩阵类,在该类中,我希望使用构造函数初始化矩阵,然后使用函数获取数组的成员。 然后重载“*”运算符,使两个输入的矩阵相乘。然后重载ostream以显示已经给定的矩阵作为输入或乘积(如“cout”)
  • void Marix::setRowXColumn(int行,int列)
    。它应该是矩阵。如果您使用的是IDE,它应该警告您这些输入错误

  • setRowXColumn(int行,int列)
    应该是
    setRowXColumn(行,列);

  • c++语句的结尾总是需要一个“;”


  • double A[row][column];
    如果您试图创建一个“动态数组”,请按这种方式执行
    double**A;

        A = new double*[row];
    
        for(int i = 0; i < row; i++){
            A[i] = new double[column];
        }
    
    A=新的双*[row];
    对于(int i=0;i
    在构造函数中,然后在解构器中删除它

    我想在这种情况下,你可以用向量代替数组

  • void Marix::setRowXColumn(int行,int列)
    。它应该是矩阵。如果您使用的是IDE,它应该警告您这些输入错误

  • setRowXColumn(int行,int列)
    应该是
    setRowXColumn(行,列);

  • c++语句的结尾总是需要一个“;”


  • double A[row][column];
    如果您试图创建一个“动态数组”,请按这种方式执行
    double**A;

        A = new double*[row];
    
        for(int i = 0; i < row; i++){
            A[i] = new double[column];
        }
    
    A=新的双*[row];
    对于(int i=0;i
    在构造函数中,然后在解构器中删除它

    我想在这种情况下,你可以用向量代替数组


  • double A[行][列];
    是不合法的。数组的大小必须在编译时知道。某些编译器允许您使用某些类型的可变长度数组,但不能使用这种用法。以下是您可以使用的起点或灵感。请注意它如何使用一维数组并执行索引数学,使其看起来像二维数组。建议:W编译和测试前编写无需编写的代码。如果你只编写几行代码,最多只编写一个函数,那么你会更快地发现错误,而且错误也不会有太多机会累积。如果你允许的话,错误有可能会聚集在你身上。不要让他们。这段代码中有太多错误和误解。还有太多不同类型的错误。我知道现在你是一个初学者,但你现在已经有点不知所措了。忘记你得到的所有其他建议,用户4581301说的是最重要的事情。重新开始这个项目(我认为你写的代码不值得保存)。一次编写几行代码,在编写更多代码之前对这些代码进行编译、测试和运行。这样,一次只需处理一个问题。感谢您的回答。我目前正在处理您对我说的内容,并试图从错误中吸取教训。我将很快对代码进行编辑,使其正常运行。T汉克斯
    双A[行][列];
    是不合法的。数组的大小必须在编译时知道。某些编译器允许您使用某些类型的可变长度数组,但不能使用这种用法。以下是您可以使用的起点或灵感。请注意它如何使用一维数组并执行索引数学,使其看起来像二维数组。建议:W编译和测试前编写无需编写的代码。如果你只编写几行代码,最多只编写一个函数,那么你会更快地发现错误,而且错误也不会有太多机会累积。如果你允许的话,错误有可能会聚集在你身上。不要让他们。这段代码中有太多错误和误解。还有太多不同类型的错误。我知道现在你是一个初学者,但你现在已经有点不知所措了。忘记你得到的所有其他建议,用户4581301说的是最重要的事情。重新开始这个项目(我认为你写的代码不值得保存)。一次编写几行代码,在编写更多代码之前对这些代码进行编译、测试和运行。这样,一次只需处理一个问题。感谢您的回答。我目前正在处理您对我说的内容,并试图从错误中吸取教训。我将很快对代码进行编辑,使其正常运行。Thanks4是正确的,但由于它是一个由其他阵列组成的阵列,所有这些阵列都可能分散在整个存储中,因此它的缓存使用率通常很差,性能也很差(关键术语:较差的空间局部性)。绝对喜欢
    std::vector
    而不是数组的原始指针。使用原始指针可以强制类遵守原始指针。如果您使用
    std::vector
    代替原始指针,类可以遵守零规则,并避免您编写一些潜在的棘手代码。谢谢,先生。但我不知道如何使用向量。我目前正在努力学习它和所有人告诉我的事情(在评论中)这就是我应该对代码执行的操作。我希望很快能找到答案。Thanks4是正确的,但通常缓存使用率很差,性能也很差,因为它是一个由其他阵列组成的阵列,所有这些阵列都可能分散在整个存储中(关键术语:糟糕的空间位置)。绝对喜欢
    std::vector
    而不是数组的原始指针。使用原始指针可以强制类遵守原始指针。如果您使用
    std::vector
    代替原始指针,类可以遵守零规则,并避免您编写一些潜在的棘手代码。谢谢,先生。但我不知道如何使用向量。我是currentl