[英]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.