常量函数不能用于常量引用对象吗?
我不完全确定如何描述我的问题。常量函数不能用于常量引用对象吗?
基本上我有检查,看看如果我的矩形包含不同的矩形,但是一个功能,当我试图用我的功能,如getX
和getY
我会见了:Error: the object has type qualifiers that are not compatible with the member function object type is: const Rectangle2D
。
我的功能如下。
const bool Rectangle2D::contains(const Rectangle2D &r) {
const double x = r.getX();
const double y = r.getY();
const double width = r.getWidth();
const double height = r.getHeight();
}
我get
功能全部是不变的,例如:
const double Rectangle2D::getX() {
return x;
}
而且在我的课它的函数定义为const bool contains(const Rectangle2D &r)
。
如果需要更多信息,请告诉我。如果有人能帮助我或指出我朝着正确的方向,我将不胜感激。
你需要把const的函数名和参数列表之后,大括号或分号之前。因此,在你的类,你应该有
double getX() const;
然后当你实现它,你应该有
double Rectangle2D::getX() const {
return x;
}
你需要做同样与包含功能,任何你想要的其他功能能够在const Rectangle2D上使用。
他可能也希望'contains'是const,并且不返回const布尔值。 – QuentinUK 2013-02-25 04:03:16
完成这样:
const double Rectangle2D::getX() {
return x;
}
这是一个非const函数返回一个恒定的两倍。
要使它成为一个const函数,像这样做:
double Rectangle2D::getX() const {
return x;
}
啊,好的!谢谢。 – Battleroid 2013-02-25 04:02:44
'bool contains(const Rectangle2D&r)const'是常量函数的正确语法。 – 2013-02-25 03:59:02
...并且返回类型的'const bool'不需要。 'bool'就足够了。同样适用于你的其他'get()''ers。看起来你只是把你的'const'放在错误的地方。尝试另一端= P – WhozCraig 2013-02-25 04:01:25
好的,谢谢你帮我清楚了。 – Battleroid 2013-02-25 04:06:11