Cita:  
					Iniciado por Heimish2000  
  Te lo pone bien claro...
 
 
Tu, en tu constructor por copia, estás pasando la referencia a un objeto de tipo matrix (por eso el &), pero en esa linea no estás pasando la referencia, estás pasando el objeto. Lo puedes ver porque si te fijas, el operador + devuelve un matrix, no un matrix& y por eso te da error. 
Soluciones: Que acepte un objeto y no su referencia o pasarle al constructor una referencia y no un objeto.
   Lo consegui añadiendo un const al constructor copia y funciona:    
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 + (const 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 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 + (const 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; 
-     matrix E(A+B); 
-     
-     D.print_matrix (); 
-     E.print_matrix (); 
-     
- } 
Me podrias escribir el codigo con tus soluciones??  
Un saludo!!