Estoy tratando de copiar valores de un objeto de clase a otro objeto de clase, pero el método de sobrecarga del operador de asignación no funciona.

class rectangle
{
    int length,breadth;
public:
    rectangle(int l,int b)
    {
        length=l;
        breadth=b;
    }
   rectangle operator =(square s) //This line is giving me error.
    {
        breadth=length=s.seee();
        cout<<"length"<<length;
    }
    int see() const
    {
        return length;
    }
};
class square
{
    int side;
public:
    square()
    {
        side=5;
    }
    square operator =(rectangle r)
    {
        side=r.see();
        cout<<side;
    }
    int seee() const
    {
    return side;
    }
};

Error = 's' tiene un tipo incompleto. ¿Cómo puedo solucionar este error? ¡Por favor ayuda!

0
Creator 5 oct. 2019 a las 15:14

1 respuesta

La mejor respuesta

Debe realizar la implementación de la función miembro después de haber definido square. También tenga en cuenta que se espera que los operadores de asignación devuelvan una referencia al objeto al que se está asignando, this, y que el lado derecho de la operación (el square en este caso) generalmente se toma como un const& para evitar copias innecesarias.

class rectangle
{
//...
    rectangle& operator=(const square&);
//...
};

class square
{
//...
};

rectangle& rectangle::operator=(const square& s)
{
    breadth=length=s.seee();
    return *this;
}
2
Ted Lyngmo 5 oct. 2019 a las 12:29