Bueno, tengo el siguiente codigo:
Código C++:
Ver original#include <iostream>
using namespace std;
#define MAX_SIZE 10
class matrix {
public:
int size; double s[MAX_SIZE];
matrix (int n){
if (n > MAX_SIZE) {
cerr<<"error, demasiado grande"; return;
}
size = n;
}
matrix operator = (matrix A);
~matrix () {}
matrix scan_matrix ();
matrix suma_matrix (matrix A);
};
matrix matrix :: scan_matrix (){
for(int i=0;i<size;i++){
cout<<"Introduzca el valor "<<i<<" de la matriz\n";cin>>s[i];}
}
matrix matrix :: suma_matrix(matrix A){
if(size!=A.size){cerr<<"Las matrices no pueden sumarse";}
matrix C(A.size);
for (int i=0;i<size;i++){
C.s[i]=A.s[i]+s[i];
cout<<A.s[i]<<"+"<<s[i]<<"="<<C.s[i]<<"\n";
}return C;}
matrix matrix :: operator = (matrix A){
matrix temp (A.size);
for (int i=0;i<A.size;i++){
temp.s[i]=A.s[i];
}
return temp;
}
int main (int n, int m){
cout<<"Introduzca el orden del vector 1\n";cin>>n;
matrix A(n);
A.scan_matrix();
cout<<"Introduzca el orden del vector 2\n";cin>>m;
matrix B(m);
B.scan_matrix();
matrix C=A.suma_matrix(B);
for(int i=0;i<n;i++){cout<<C.s[i]<<" ";}
}
Sé que el error está en alguna parte del constructor de copia por que el programa compila y funciona si le quito esa redefinición, sin embargo no encuentro el error. A ver si alguien me puede decir donde está el error y ya de paso por qué hay que tener escrito el operador '&' en la declaración.
Un saludo y muchas gracias de antemano!!!