Cita:
Iniciado por dragg04 Que error te arroja
Da muchos errores, prueba tu mismo.
Me dieron una solución en otro sitio: sobrecargar el constructor copia de vector para que reciba una matriz y declarar un constructor default en la clase matrix. Quedaría asi:
Código C++:
Ver original#include <iostream>
#include <cmath>
#define MAX_SIZE 10
using namespace std;
class matrix {
public:
int col, fil;
double s[MAX_SIZE][MAX_SIZE];
matrix (int n, int m);
matrix (){};
matrix(const matrix& A);
matrix operator = (matrix A);
matrix operator + (matrix A);
matrix scan_matrix (void);
void print_matrix (void);
~matrix(){}
};
matrix :: matrix(int n, int m){
if(n>MAX_SIZE){
cerr<<"ERROR: el numero de filas introducidas es mayor del permitido";
fil=MAX_SIZE;
}
else{
fil=n;
}
if(m>MAX_SIZE){
cerr<<"ERROR: el numero de columnas introducidas es mayor del permitido";
col=MAX_SIZE;
}
else{
col=m;
}
}
matrix :: matrix (const matrix& A){
fil=A.fil;col=A.col;
for(int i=0;i<A.fil;i++){
for(int j=0;j<A.col;j++){
s[i][j]=A.s[i][j];
}
}
}
matrix matrix :: operator + (matrix A){
if(col!=A.col || fil != A.fil){
cerr<<"ERROR: el numero de filas o columnas de las matrices introducidas no coincide\n";
}
matrix C(A.fil,A.col);
for(int i=0;i<A.fil;i++){
for (int j=0;j<A.col;j++){
C.s[i][j]=s[i][j]+A.s[i][j];
}
}
return C;
}
matrix matrix ::operator = (matrix A){
fil = A.fil; col = A.col;
for(int i=0;i<A.fil;i++){
for (int j=1;j<A.col;j++){
s[i][j]=A.s[i][j];
}
}
}
matrix matrix :: scan_matrix (void){
for (int i=0;i<fil;i++){
for(int j=0;j<col;j++){
cout<<"Introduzca el coef "<<i<<" "<<j<<"\n";
cin>>s[i][j];
}
}
}
void matrix :: print_matrix (void){
for (int i=0;i<fil;i++){
for(int j=0;j<col;j++){
cout<<"El coef "<<i<<" "<<j<<" = "<<s[i][j]<<"\n";
}
}
}
class square_matrix : public matrix {
public:
square_matrix(int size) : matrix (size,size) {}
~square_matrix () {}
};
class vector : public matrix {
public:
vector (int size) : matrix(1,size) {}
vector(const matrix& A);
~vector () {}
};
vector :: vector (const matrix& A){
col=A.col;
for(int i=0;i<A.fil;i++){
s[1][i]=A.s[1][i];
}
}
int main (){
matrix A(2,2);square_matrix B(2);vector C(2);vector D(2);
A.scan_matrix();B.scan_matrix();C.scan_matrix();D.scan_matrix();
matrix F=(A+B);F.print_matrix();
vector E(C+D);
}
Aunque no entiendo muy bien por que funciona asi :P
Un saludo!!