Mam problem przy przeładowywaniu operatora +. Oto kod:
Matrix Matrix:: operator+ (const Matrix &a)const{
Matrix sum(size);
for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
sum.ptr[i][j] = a.ptr[i][j] + ptr[i][j];
}
}
return sum;
}
A oto klasa:
class Matrix {
int size;
int **ptr;
public:
Matrix():size(0){}
Matrix(const int s):size(s){
ptr = new int*[size];
for(int i = 0; i < size; i++)(*(ptr+i)) = new int[size];
}
~Matrix();
Matrix(const Matrix & a);
void input();
Matrix operator+ (const Matrix &a)const;
friend ostream & operator<< (ostream & out, const Matrix &a);
};
Problem jest taki, że za nim obiekt sum zostanie zwrócony (czyli suma dodawania), destruktor go likwiduje. Jak można sobie z tym poradzić ?