Cita:
Iniciado por Heimish2000 El error puede estar en la declaración de temp, ya que deberías crear el objeto con un new, para lo que tienes que definir el constructor de copia (ahora, aunque digas que lo tienes, lo que tienes es el operador de asignacion)
matrix temp = new matrix(A.size);
Por otra parte, no deberías declarar los atributos como públicos (eso no dará errores de compilación ni ejecución, pero no está bien hacerlo)
Ostia tienes toda la razón; no es que no tenga definido el constructor copia es que me había confundido de código jajajja
Aqui esta el codigo de verdad:
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);
~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 elementos\n";
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 vector1\n";
cin>>n;
matrix A(n);
A.scan_matrix();
cout<<"Introduzca el orden del vector2\n";
cin>>m;
matrix B(m);
B.scan_matrix();
matrix D = A + B;
D.print_matrix ();
}
Un saludo!!!