我有一個Point2D類,如下所示:C++ const限定符
class Point2D{
int x;
int y;
public:
Point2D(int inX, int inY){
x = inX;
y = inY;
};
int getX(){return x;};
int getY(){return y;};
};
現在我已經定義的類Line
爲:
class Line {
Point2D p1,p2;
public:
LineVector(const Point2D &p1,const Point2D &p2):p1(p1),p2(p2) {
int x1,y1,x2,y2;
x1=p1.getX();y1=p1.getY();x2=p2.getX();y2=p2.getY();
}
};
現在,編譯器提供了錯誤的最後一行(其中getX()
被稱爲):
error: passing
const Point2D
asthis
argument ofint Point2D::getX()
discards qualifiers
如果我刪除const
ke在這兩個地方,然後編譯成功。
什麼是錯誤?是否因爲getX()
等被內聯定義?有沒有什麼辦法可以糾正這種情況,讓他們保持聯機狀態?
因爲'getX'和'getY'是非常量,所以假設它們可以對類進行修改。但是'p1'和'p2'是'const',這意味着它們不能被修改。 Ergo,你不能在它們上面調用'getX'或'getY'。使這些函數爲'const'來表示它們不會修改實例。 – GManNickG 2010-04-22 08:20:25
所有的答案告訴我使用'int getX()const {...}'。我想知道哪個答案是正確的? – Jet 2015-09-04 13:34:58