C++ 在c+;中使用赋值运算符重载时出错+;将一个类对象的数据复制到另一个类对象

C++ 在c+;中使用赋值运算符重载时出错+;将一个类对象的数据复制到另一个类对象,c++,operator-overloading,assignment-operator,C++,Operator Overloading,Assignment Operator,我试图将一个类对象的值复制到另一个类对象,但赋值运算符重载方法不起作用 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=

我试图将一个类对象的值复制到另一个类对象,但赋值运算符重载方法不起作用

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;
    }
};
类矩形
{
整数长度、宽度;
公众:
矩形(整数l,整数b)
{
长度=l;
宽度=b;
}
矩形运算符=(正方形s)//这行给了我一个错误。
{
宽度=长度=s.见();

cout在定义了
square
之后,您需要执行成员函数。还要注意,赋值操作符将返回对被赋值对象的引用,
this
,并且操作的右侧(在本例中为
square
)通常被视为
常量&
,以避免不必要的复制

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

class square
{
//...
};

rectangle& rectangle::operator=(const square& s)
{
    breadth=length=s.seee();
    return *this;
}

在定义了
square
之后,您需要执行成员函数的实现。还要注意的是,赋值操作符需要返回对被赋值对象的引用,
this
,并且操作的右侧(在本例中为
square
)通常被视为
常量&
,以避免不必要的复制

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

class square
{
//...
};

rectangle& rectangle::operator=(const square& s)
{
    breadth=length=s.seee();
    return *this;
}