2013-02-25 29 views
0

我不完全確定如何描述我的問題。常量函數不能用於常量引用對象嗎?

基本上我有檢查,看看如果我的矩形包含不同的矩形,但是一個功能,當我試圖用我的功能,如getXgetY我會見了: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)

如果需要更多信息,請告訴我。如果有人能幫助我或指出我朝着正確的方向,我將不勝感激。

+2

'bool contains(const Rectangle2D&r)const'是常量函數的正確語法。 – 2013-02-25 03:59:02

+1

...並且返回類型的'const bool'不需要。 'bool'就足夠了。同樣適用於你的其他'get()''ers。看起來你只是把你的'const'放在錯誤的地方。嘗試另一端= P – WhozCraig 2013-02-25 04:01:25

+0

好的,謝謝你幫我清楚了。 – Battleroid 2013-02-25 04:06:11

回答

4

你需要把const的函數名和參數列表之後,大括號或分號之前。因此,在你的類,你應該有

double getX() const; 

然後當你實現它,你應該有

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

你需要做同樣與包含功能,任何你想要的其他功能能夠在const Rectangle2D上使用。

+0

他可能也希望'contains'是const,並且不返回const布爾值。 – QuentinUK 2013-02-25 04:03:16

2

完成這樣:

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

這是一個非const函數返回一個恆定的兩倍。

要使它成爲一個const函數,像這樣做:

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

啊,好的!謝謝。 – Battleroid 2013-02-25 04:02:44