Sobrecarga del operador igual
Publicado por ana (Santander) (1 intervención) el 20/04/2007 17:08:55
Hola a todos, tengo un problema y no entiendo el pq:
tengo sobrecargado el operador = en una clase, de tal forma que cuando a un objeto de esa clase le asigno otro objeto directamente, no pasa nada y funciona, pero si a un objeto de esa clase le asigno el resultado de una operacion (cuyo resultado es otro objeto de esa clase) no funciona. ¿POR QUE?
El codigo es el siguiente
#include<iostream.h>
class coordenada
{ private:
int x,y,z;
public:
coordenada(int a=0, int b=0, int c=0);
coordenada operator +(coordenada &op);
coordenada& operator =(coordenada &op);
void ver();
};
coordenada::coordenada(int a, int b,int c)
{ x=a;
y=b;
z=c;}
coordenada coordenada::operator+(coordenada &op)
{ coordenada nuevo;
nuevo.x=x+op.x;
nuevo.y=y+op.y;
nuevo.z=z+op.z;
return nuevo;}
coordenada& coordenada:: operator=(coordenada &op)
{ x=op.x;
y=op.y;
z=op.z;
return *this;}
void coordenada::ver()
{ cout<<"X= "<<x<<endl;
cout<<"Y= "<<y<<endl;
cout<<"Z= "<<z<<endl;}
int main()
{ coordenada c1;
coordenada c2(1,2,3);
coordenada c3;
c1.ver();
c2.ver();
c3.ver();
c4=(c3+c2); -->//ERROR!!!
c4.ver();
system("PAUSE");
return 0;
}
Espero que alguien me pueda ayudar
Gracias de antemano
Una saludo
Ana
tengo sobrecargado el operador = en una clase, de tal forma que cuando a un objeto de esa clase le asigno otro objeto directamente, no pasa nada y funciona, pero si a un objeto de esa clase le asigno el resultado de una operacion (cuyo resultado es otro objeto de esa clase) no funciona. ¿POR QUE?
El codigo es el siguiente
#include<iostream.h>
class coordenada
{ private:
int x,y,z;
public:
coordenada(int a=0, int b=0, int c=0);
coordenada operator +(coordenada &op);
coordenada& operator =(coordenada &op);
void ver();
};
coordenada::coordenada(int a, int b,int c)
{ x=a;
y=b;
z=c;}
coordenada coordenada::operator+(coordenada &op)
{ coordenada nuevo;
nuevo.x=x+op.x;
nuevo.y=y+op.y;
nuevo.z=z+op.z;
return nuevo;}
coordenada& coordenada:: operator=(coordenada &op)
{ x=op.x;
y=op.y;
z=op.z;
return *this;}
void coordenada::ver()
{ cout<<"X= "<<x<<endl;
cout<<"Y= "<<y<<endl;
cout<<"Z= "<<z<<endl;}
int main()
{ coordenada c1;
coordenada c2(1,2,3);
coordenada c3;
c1.ver();
c2.ver();
c3.ver();
c4=(c3+c2); -->//ERROR!!!
c4.ver();
system("PAUSE");
return 0;
}
Espero que alguien me pueda ayudar
Gracias de antemano
Una saludo
Ana
Valora esta pregunta


0