Programación General > C/C++
Error en contructor de copia
Checho360:
Bueno pues tienes razón Epa; modificando eso para ponerle un const compila y funciona perfectamente:
--- 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 (const matrix& A);//<---------------Aqui esta la declaracion}; matrix::matrix(const 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; matrix E(A+B); D.print_matrix (); E.print_matrix (); system("pause");return 1;}
A ver si alguien puede decir por que pasa esto :S
Un saludo!!
m0skit0:
El error que te da es porque no tienes constructor por defecto. Es decir, declaras
--- Código: C++ ---matrix D pero esto no lo puedes hacer porque tu constructor pide un argumento.
Saludos.
Checho360:
--- Cita de: "m0skit0" ---El error que te da es porque no tienes constructor por defecto. Es decir, declaras
--- Código: C++ ---matrix D pero esto no lo puedes hacer porque tu constructor pide un argumento.
Saludos.
--- Fin de la cita ---
Si pero de todas formas si fuera por eso no debería de funcionar al poner esto ? :
--- Código: C++ --- matrix D(n); D = A + B;
Es que así tampoco funciona
m0skit0:
Es que el constructor copia es matrix::matrix(const matrix& A) y no matrix::matrix(matrix& A) (léete esto de principio a fin).
Checho360:
--- Cita de: "m0skit0" ---Es que el constructor copia es matrix::matrix(const matrix& A) y no matrix::matrix(matrix& A) (léete esto de principio a fin).
--- Fin de la cita ---
Bueno pues así es entonces; esa es la forma de crear el constructor copia y lo tenía mal declarado...
Un saludo y muchas gracias a todos!
Navegación
[*] Página Anterior
Ir a la versión completa