Ошибка при использовании перегрузки оператора Assignment в c ++ для копирования данных объекта класса в другой объект класса - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь скопировать значения одного объекта класса в другой объект класса, но метод перегрузки оператора присваивания не работает.

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;
    }
};

Ошибка = 's' не завершенатип. Как я могу устранить эту ошибку? Пожалуйста, помогите!

1 Ответ

2 голосов
/ 05 октября 2019

Вам нужно выполнить реализацию функции-члена после того, как вы определили square. Также обратите внимание, что операторы присваивания должны возвращать ссылку на объект, которому присваивается this, и что правая часть операции (в данном случае square) обычно принимается как const& дляизбегайте ненужного копирования.

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

class square
{
//...
};

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