Si mira te comento al completo:
Si utilizo lo que dices:
Código C++:
Ver originalvector :: vector (const matrix& A):matrix(A){
col=A.col;
for(int i=0;i<A.fil;i++){
s[0][i]=A.s[0][i];
}
}
Funciona, aunque no se muy bien como va eso porque yo todas las declaraciones que lei del constructor copia era:
En lugar de:
Código C++:
Ver originalvector :: vector (const matrix& A):matrix(A)
Ademas si pruebo con el operador + sobrecargado tambien funciona:
Código C++:
Ver originalvector vector :: operator + (vector m){
vector C(m.col);
for(int i=0;i<m.col;i++){
C.s[0][i]=s[0][i]+m.s[0][i];
}
return C;
}
Pero si pruebo con el operador = no funciona:
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(0,size) {}
vector () {};
vector operator = (matrix m);
~vector () {}
};
vector vector :: operator = (matrix m){
vector C(m.col);
for(int i=0;i<m.col;i++){
C.s[0][i]=m.s[0][i];
}
return C;
}
int main (){
vector C(2);vector D(2);
C.scan_matrix();D.scan_matrix();
vector E=(C+D);E.print_matrix();
}
El error que arroja es:
Código:
110 conversion from `matrix' to non-scalar type `vector' requested
Un saludo y gracias por ayudarme!!