Cześć,
Chciałem prosty kodzik tworzenia i mnożenia macierzy przenieść na obiekty. Tworzę sobie dwie macierze. W konstruktorach pobierają one dane z plików i zapisują je do dynamicznych tablic wewnątrz klasy. I to działa w 100% poprawnie. Problem pojawił mi się, gdy chce napisać drugi konstruktor, który utworzy trzecią macierz mnożąc dwie już istniejące, które chce przekazać do tego konstruktora jako obiekty. I tego kompilator nie łyka. Mógłbym się was zapytać w czym źle rozumuję?
main:
int main()
{
char name1[10]="dane.txt";
char name2[10]="dane2.txt";
Matrix Tab1(name1);
Matrix Tab2(name2);
Tab1.show();
Tab2.show();
Matrix Tab3(Tab1,Tab2);
return 0;
}
matrix.h
class Matrix
{
public:
Matrix(char name[]);
Matrix(Matrix tab1, Matrix tab2);
virtual ~Matrix();
void show();
protected:
private:
double **M;
int row,col,grade;
};
matrix.cpp
Matrix::Matrix(char name[])
{
ifstream data(name);
data>>row;
data>>col;
M = new double* [row];
for(int k=0; k<row; k++)
M[k] = new double [col];
for(int i=0; i<row; i++)
{
for(int j=0; j<col; j++)
{
double x;
data>>x;
M[i][j] = x;
}
}
if(row==col)
{
grade=row;
}
data.close();
}
Matrix::Matrix(Matrix tab1, Matrix tab2)
{
tab1.show();
tab2.show();
}
Matrix::~Matrix()
{
for(int i=0;i<row;i++)
delete [] M[i];
delete [] *M;
}
void Matrix::show()
{
for(int i=0; i<row; i++)
{
for(int j=0; j<col; j++)
{
cout<<M[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n";
}