有人可以帮我找出这段代码中的问题吗?我正在使用代码块17.12。 我正在尝试创建一个Matrix类,其中我想使用构造函数初始化一个矩阵,然后使用一个函数获取数组的成员。 然后重载'*'运算符以将两个输入的矩阵相乘。然后重载ostream以显示已经给定的矩阵作为输入或乘积(例如“ cout << m << endl;)。
#include <iostream>
using namespace std;
class Matrix
{
private:
//static int row; //don't work
//static const int row; //don't work
//constexpr int row; //don't work
int row;
int column;
//Here my moto is to make a matrix which takes input from the user and
create the matrix of desired size at runtime.
double A[row][column];
public:
Matrix(int row,int column);
Matrix(Matrix &mat);
void setRowXColumn(int row,int column);
void setColumn(int column);
void setMatrix(Matrix A);
};
int main()
{
//Here 3 and 2 are the rows and columns of the matrix m respectively.
Matrix m(3,2);
return 0;
}
Matrix::Matrix(int row=0,int column=0)
{
setRowXColumn(int row,int column); //error: expected primary-expression before 'int'|
//what primary-expression?
}
Matrix::Matrix(Matrix &mat)
{
row=mat.row;
column=mat.column;
}
void Matrix::setRowXColumn(int row,int column)
{
if(row<0)
this->row=0;
else
this->row=row;
if(column<0)
this->column=0;
else
this->column=column;
}
//And i also want the members as input by the user at runtime.
void Matrix::setMatrix(Matrix A)
{
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
cout<<"Enter"<<Matrix A<<"["<<i<<"]"<<"["<<j<<"]"<<endl;
cin>>A[i][j];
}
}
}
从上面的代码中,我遇到以下错误。
|| ===生成:在类矩阵中调试(编译器:GNU GCC编译器)=== |
Matrix Matrix \ main.cpp | 9 |错误:无效使用非静态数据成员Matrix :: row'|
Class Matrix \ main.cpp | 7 |注意:在此声明|
Matrix \ main.cpp | 9 |类错误:无效使用非静态数据成员Matrix :: column'|
Class Matrix \ main.cpp | 8 |注意:在此处声明|
Matrix Matrix \ main.cpp ||在构造函数'Matrix :: Matrix(int,int)':|
Matrix Matrix \ main.cpp | 42 |错误:“ int”之前的预期主表达式|
Matrix Matrix \ main.cpp | 42 |错误:“ int”之前的预期主表达式|
Class Matrix \ main.cpp ||在成员函数'void Matrix :: setMatrix(Matrix)':|
Class Matrix \ main.cpp | 69 |错误:“ A”之前的预期主要表达式|
Matrix \ main.cpp | 70 |类错误:'operator []'不匹配(操作数类型为'Matrix'和'int')|
|| ====构建失败:6个错误,0个警告(0分钟,0秒)=== |
非常感谢您的帮助,也谢谢您。 我是一名正在学习c ++的学生。 我仍在编写此代码。
编辑:-到目前为止,我已经减少了错误,但是“双A [row] [column]是我的主要头疼。我想要这样,因为我想像我在main函数中那样创建一个矩阵然后,将数组的成员作为输入。 希望此编辑进一步阐明我的问题。
谢谢...
答案 0 :(得分:1)
void Marix::setRowXColumn(int row,int column)
。它应该是矩阵。您在使用IDE时,它应该警告您这些错字。
setRowXColumn(int row,int column)
应该是setRowXColumn(row,column);
c ++语句始终需要一个“;”最后。
double A[row][column];
,如果您尝试创建“动态数组”,请使用double **A;
进行此操作。和
A = new double*[row];
for(int i = 0; i < row; i++){
A[i] = new double[column];
}
在构造函数中,然后在解构函数中将其删除。
在这种情况下,我认为您可以使用向量而不是数组。