void get()输入语句报错
#include <iostream>
using namespace std;
class Array
{
private:
int column,row;
int *p;
public:
Array() {}
Array(int a,int b)
{column=a;
row=b;
p=new int[column*row];}
~Array()
{delete []p;}
void get()
{
cout<<"请输入矩阵,行为:"<<row<<"列为:"<<column<<endl;
for(int i=0; i<row; i++)
for(int j=0; j<column; j++)
cin>>p[i][j];
}
Array operator+(Array &b)
{ if(row!=b.row || column!=b.column)
cout<<"不可相加";
else
{Array tmp;
for(int i=0; i<row; i++)
for(int j=0; j<column; j++)
tmp.p[i][j]=p[i][j]+t.p[i][j];
return tmp;}
}
void show()
{
for(int i=0; i<row; i++)
{
for(int j=0; j<column; j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
cout<<"------------------"<<endl;
}
};
int main()
{
Array c1,c2,c3;
c1.get();
c2.get();
c1.show();
c2.show();
c3=c1+c2;
c3.show();
return 0;
}
你是一级指针,不能用[][]方式
将二维数组动态分配的指针p转化为二维数组,我改一下
#include <iostream>
using namespace std;
class Array
{
private:
int column,row;
int **p;
public:
Array() {}
Array(int a,int b)
{
column=a;
row=b;
p=new int*[row];
for(int i=0; i<row; i++)
p[i]=new int[column];
}
~Array()
{
for(int i=0; i<row; i++)
delete []p[i];
delete []p;
}
void get()
{
cout<<"请输入矩阵,行为:"<<row<<"列为:"<<column<<endl;
for(int i=0; i<row; i++)
for(int j=0; j<column; j++)
cin>>p[i][j];
}
Array operator+(Array &b)
{
if(row!=b.row || column!=b.column)
{
cout<<"不可相加";
exit(0);
}
Array tmp(row, column);
for(int i=0; i<row; i++)
for(int j=0; j<column; j++)
tmp.p[i][j]=p[i][j]+b.p[i][j];
return tmp;
}
void show()
{
for(int i=0; i<row; i++)
{
for(int j=0; j<column; j++)
{
cout<<p[i][j]<<" ";
}
cout<<"\n";
}
cout<<"------------------"<<endl;
}
};
int main()
{
int m, n;
cout << "请输入矩阵1的行数和列数: " << endl;
cin >> m >> n;
Array c1(m, n);
c1.get();
cout << "请输入矩阵2的行数和列数: " << endl;
cin >> m >> n;
Array c2(m, n);
c2.get();
cout << "矩阵1为: " << endl;
c1.show();
cout << "矩阵2为: " << endl;
c2.show();
Array c3 = c1 + c2;
cout << "两矩阵相加结果为:" << endl;
c3.show();
return 0;
}