簡體   English   中英

類和不可訪問的成員

[英]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;
}

問題是數據成員xy默認情況下對於使用關鍵字class定義的類類型private的(與關鍵字struct相對)。

解決該錯誤,您可以使用 getter getXgetY ,如下所示:

 std::cout << p.getX() << ' ' << p.getY();

演示


另一種選擇(較少/不推薦)是將xy公開或使用struct關鍵字,但這會破壞擁有 getter 和 setter( setXsetY )的目的。

默認情況下,類成員(與結構成員相反)是私有的,因此您不能在Point的定義之外直接訪問Point::xPoint::y 但是,您已經為那些公開的值定義了 getter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM