所以我有一个类Rectangle,它带有一个重载运算符=,定义如下:
Rectangle& Rectangle::operator=(Rectangle &rhs)
{
if (this != &rhs)
{
m_x = rhs.m_x;
m_y = rhs.m_y;
m_width = rhs.m_width;
m_height = rhs.m_height;
m_intersection = rhs.m_intersection;
}
return *this;
}
到目前为止,编译器没有抱怨。但当我试图做一个作业时,我的编译器抱怨道:
m_boundingBox = Rectangle(x, y, width, height);
现在我尽量避免调用new,因此任务是这样的。我假设我需要为这种赋值实现一个单独的复制构造函数,但我不知道签名应该是什么样子。
以下是编译器错误:错误(激活(E0349无操作员"="匹配这些操作数
首先,我想解决以上问题。但第二,如果你能为这只困惑的代码编写猿揭示整个主题,那将是令人惊讶的。教人钓鱼。
您的问题是没有声明参数const
。应该是这样的:
Rectangle& Rectangle::operator=(const Rectangle &rhs)