要实现大小不固定的矩阵相加

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;
}