常量函数不能用于常量引用对象?

时间:2013-02-25 03:54:28

标签: c++

我不完全确定如何描述我的问题。

基本上我有一个函数来检查我的矩形是否包含不同的矩形,但是,当我尝试使用getXgetY等函数时,我遇到了:{{1 }}

我的功能如下。

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

如果需要更多信息,请与我们联系。如果有人可以帮助我或指出我正确的方向,我将不胜感激。

2 个答案:

答案 0 :(得分:4)

您需要在函数名称和参数列表之后,在大括号或分号之前放置const。所以在你班上你应该有

double getX() const;

然后当你实现它时,你应该

double Rectangle2D::getX() const {
    return x;
}

你需要对contains函数和你想在const Rectangle2D上使用的任何其他函数做同样的事情。

答案 1 :(得分:2)

这样做:

const double Rectangle2D::getX() {
    return x;
}

这是一个非const 函数,它返回一个常量double。

要使其成为const函数,请执行以下操作:

double Rectangle2D::getX() const {
  return x;
}