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!!!