Programación General > C/C++
Error en contructor de copia
Checho360:
Bueno, tengo el siguiente codigo:
--- Código: C++ ---#include <iostream>using namespace std;#define MAX_SIZE 10 class matrix{ public: int size; double s[MAX_SIZE]; matrix (int n); ~matrix() {} int test_matrix (int a); matrix scan_matrix (void); matrix operator + (matrix A); void print_matrix (void); matrix (matrix& A);//<---------------Aqui esta la declaracion}; matrix :: matrix (matrix& A){ //<-------------Aqui esta la implementación size = A.size; for (int i=0;i<A.size;i++) s[i]=A.s[i]; } matrix :: matrix (int n){ size = test_matrix(n); } int matrix :: test_matrix (int a){ if(a>MAX_SIZE){ cerr<<"Demasiados elementosn"; a=MAX_SIZE; } return a;} matrix matrix :: scan_matrix (void){ for(int i=0;i<size;i++){ cout<<"Ingresa el coef "<<i<<"n";cin>>s[i]; }} matrix matrix :: operator + (matrix A){ if(A.size!=size){ cerr<<"Los vectores han de ser del mismo orden"; } matrix C (A.size); for(int i=0;i<A.size;i++){ C.s[i]=s[i]+A.s[i];} return C; } void matrix :: print_matrix (void){ for(int i= 0;i<size;i++){ cout<<"Suma no "<<i<<" = "<<s[i]<<"n"; } } int main(){ int n;int m; cout<<"Introduzca el orden del vector1n"; cin>>n; matrix A(n); A.scan_matrix(); cout<<"Introduzca el orden del vector2n"; cin>>m; matrix B(m); B.scan_matrix(); matrix D = A + B; D.print_matrix (); system("pause");return 1;}
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!!!
Checho360:
Bueno me había confundido de código
m0skit0:
Fíjate que el constructor de copia no recibe matrix A, sino matrix& A.
Checho360:
--- Cita de: "m0skit0" ---Fíjate que el constructor de copia no recibe matrix A, sino matrix& A.
--- Fin de la cita ---
Pero si no le pongo el & tampoco compila :S
m0skit0:
--- Cita de: "Checho360" ---Pero si no le pongo el & tampoco compila :S
--- Fin de la cita ---
Yo no he dicho que no le pongas el & querido amigo. Y si no dices qué errores te da, pues difícilmente podremos ayudarte.
Navegación
[#] Página Siguiente
Ir a la versión completa