Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/03/2011, 14:08
Checho360
 
Fecha de Ingreso: marzo-2011
Mensajes: 94
Antigüedad: 13 años, 1 mes
Puntos: 3
Error en contructor de copia

Bueno, tengo el siguiente codigo:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. #define MAX_SIZE 10
  4.  
  5. class matrix {
  6.      
  7.       public:
  8.              
  9.       int size; double s[MAX_SIZE];
  10.      
  11.       matrix (int n){
  12.              
  13.              if (n > MAX_SIZE) {
  14.                    cerr<<"error, demasiado grande"; return;
  15.                    }
  16.              size = n;
  17.              }
  18.       matrix operator = (matrix A);
  19.      
  20.       ~matrix () {}
  21.      
  22.       matrix scan_matrix ();
  23.      
  24.       matrix suma_matrix (matrix A);
  25.      
  26.       };
  27.      
  28.       matrix matrix :: scan_matrix (){
  29.              for(int i=0;i<size;i++){
  30.                      cout<<"Introduzca el valor "<<i<<" de la matriz\n";cin>>s[i];}
  31.                      }
  32.       matrix matrix :: suma_matrix(matrix A){
  33.              if(size!=A.size){cerr<<"Las matrices no pueden sumarse";}
  34.              matrix C(A.size);
  35.              for (int i=0;i<size;i++){
  36.                  C.s[i]=A.s[i]+s[i];
  37.                  cout<<A.s[i]<<"+"<<s[i]<<"="<<C.s[i]<<"\n";
  38.                  }return C;}
  39.                  
  40.       matrix matrix :: operator = (matrix A){
  41.              matrix temp (A.size);
  42.              for (int i=0;i<A.size;i++){
  43.                  temp.s[i]=A.s[i];
  44.                  }
  45.                  return temp;
  46.                  }
  47.      
  48.       int main (int n, int m){
  49.           cout<<"Introduzca el orden del vector 1\n";cin>>n;
  50.           matrix A(n);
  51.           A.scan_matrix();
  52.           cout<<"Introduzca el orden del vector 2\n";cin>>m;
  53.           matrix B(m);
  54.           B.scan_matrix();
  55.           matrix C=A.suma_matrix(B);
  56.           for(int i=0;i<n;i++){cout<<C.s[i]<<" ";}
  57.           system ("pause");
  58. }

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