[英]Classes and inaccessible members
我很難理解如何修復此代碼,我收到錯誤消息,指出 Point::x 和 Point::y 都無法訪問。 我該如何解決?
class Point {
int x, y;
public:
Point(int u, int v) : x(u), y(v) {}
int getX() { return x; }
int getY() { return y; }
void setX(int newX) { x = newX; }
void setY(int newY) { y= newY; }
};
int main() {
Point p(5, 3);
std::cout << p.x << ' ' << p.y;//should print out 5 3
return 0;
}
問題是數據成員x
和y
默認情況下對於使用關鍵字class
定義的類類型是private
的(與關鍵字struct
相對)。
要解決該錯誤,您可以使用 getter getX
和getY
,如下所示:
std::cout << p.getX() << ' ' << p.getY();
演示。
另一種選擇(較少/不推薦)是將x
和y
公開或使用struct
關鍵字,但這會破壞擁有 getter 和 setter( setX
和setY
)的目的。
默認情況下,類成員(與結構成員相反)是私有的,因此您不能在Point
的定義之外直接訪問Point::x
和Point::y
; 但是,您已經為那些公開的值定義了 getter。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.