繁体   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