Programación General > C/C++

 Error en contructor de copia

<< < (3/3)

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

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa