const报错

先上错误:

…/include/rectangle.h: In instantiation of ‘R_START_TREE::Rectangle& R_START_TREE::Rectangle::operator=(const R_START_TREE::Rectangle&) [with long long unsigned int dimensions = 3]’:

rectangle_test.cpp:50:41: required from here

…/include/rectangle.h:79:33: error: passing ‘const R_START_TREE::Rectangle<3>’ as ‘this’ argument discards qualifiers [-fpermissive]

this->lowerLeft = rectangle.getLowerLeft();

错误解释:

直译:错误:将“const xxx”作为“this”参数传递会丢弃限定词。

discards qualifiers:丢弃限定符,当尝试修改const类型时,会报discards qualifiers
-fpermissive:将有关不合格代码的某些诊断从错误降级为警告。因此,使用-fpermissive将允许编译一些不合格的代码。
放到我们的代码里,就是下面的两个this的赋值。下面的代码是要重载=运算符,就是将rectangle的左下角和右上角(Point类对象)赋给this的左下角和右上角这两个私有变量。

Rectangle & operator=(const Rectangle &rectangle)
{
if(this != &rectangle)
{
this->lowerLeft = rectangle.getLowerLeft();
this->setUpperRight(rectangle.getUpperRight());
}
return *this;
}

Point getLowerLeft()
{
return lowerLeft;
}

Point getUpperRight()
{
return upperRight;
}
根据上述原因,我们可以确定,是因为Rectangle类的getUpperRight()和getLowerLeft()函数返回值都不是const限定的,所以,我们只需要修改这俩函数的声明即可。后面在对类中的getXXX()返回类的对象的时候,还是要尽量用const限定。

Point getLowerLeft() const
{
return lowerLeft;
}

Point getUpperRight() const
{
return upperRight;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖玖玖_violet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值