Я пытаюсь перегрузить оператор «+» для программы Matrix. Вот мой код, мне все хорошо. Но когда я добавляю две матрицы в свою основную функцию, ничего не происходит. Может кто-нибудь помочь? спасибо :)Перегрузка C++: оператор + для добавления матриц по элементу
BTW:
-Программа компилирует и не работает нормально до того момента, когда он должен добавить в матрицах.
-I предполагаю, что проблема заключается в реализации моего оператора +() - функции, потому что я скопировал код в функцию add (Mtrx, Mtrx), чтобы проверить, и это тоже не сработало.
//Mtrx.h
#ifndef MTRX_H_
#define MTRX_H_
#include <iostream>
#include <string>
using namespace std;
using std::ostream;
class Mtrx {
int lines,cols;
float **p;
public:
Mtrx();
Mtrx(int,int);
int getLines();
int getCols();
float getElement(int,int);
void setLines(int);
void setCols(int);
void setElement(int,int,float);
Mtrx operator+(Mtrx&);
~Mtrx();
};
ostream& operator<<(ostream& os, Mtrx& m);
#endif /* MTRX_H_ */
//Mtrx.cpp
//...
//...
Mtrx::~Mtrx(){
delete p;
p = NULL;
}
Mtrx Mtrx::operator+(Mtrx& m){
if(this->getLines() == m.getLines() && this->getCols() == m.getCols()){
Mtrx res(getLines(),getCols());
for (int i = 1; i <= this->getLines(); i++){
for(int j = 1; j <= this->getCols(); j++){
res.setElement(i,j,(this->getElement(i,j)+m.getElement(i,j)));
}
}
return res;
}
Ваши итерации из '1..nLines' и' 1..nCols' выглядят подозрительными. Является ли это намеренным или вы хотели начать с нуля? – kfmfe04
Можете ли вы вставить свой основной(), а? оператор + выглядит нормально. – Amar