先上错误:
…/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;
 }