Создал класс матриц в С++, есть конструктор копирования:
Matrix (Matrix &Mat)
{
this->cols_num = Mat.cols_num;
this->rows_num = Mat.rows_num;
Mat_1 = new double*[Mat.cols_num];
for (int i = 0; i < Mat.cols_num; i++)
{
Mat_1[i] = new double[Mat.rows_num];
for (int j = 0; j < Mat.rows_num; j++) Mat_1[i][j] = Mat(i,j);
}
std::cout<<"Копирование "<<this<<std::endl;
}
Оператор присваивания:
Matrix& operator = (Matrix& Mat)
{
double **Mat_copy;
this->cols_num = Mat.cols_num;
this->rows_num = Mat.rows_num;
Mat_copy = new double*[Mat.cols_num];
for (int i = 0; i < Mat.cols_num; i++)
{
Mat_copy[i] = new double[Mat.rows_num];
for (int j = 0; j < Mat.rows_num; j++) Mat_copy[i][j] = Mat(i,j);
}
Mat_1 = Mat_copy;
return *this;
}
И функция транспонирования
Matrix Transpose(Matrix &Mat)
{
Matrix Mat_trans(Mat.cols_num, Mat.rows_num);
for(int i = 0; i < Mat_trans.cols_num; i++)
for (int j = 0; j < Mat_trans.rows_num; j++)
Mat_trans(i,j) = Mat(j,i);
return Mat_trans;
}
Простое присваивание типа Mat1 = Mat2, работает корректно, но при попытке присвоить значение возвращаемое функцией транспонирования Mat1 = Transpose(Mat2) возникает ошибка (no operator "=" matches these operands)
Как правильно вытащить транспонированную матрицу из функции Transpose?