Home > OS >  Classes and inaccessible members
Classes and inaccessible members

Time:05-13

I am having a hard time understanding how to fix this code I get the error message that both point Point::x & Point::y are inaccessible. How do I fix this?

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;
}

CodePudding user response:

The problem is that the data members x and y are private by default for a class type defined using the keyword class(as opposed to keyword struct).

To solve the error you can use the getters getX and getY as shown below:

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

Demo.


Another option(less/not recommended) would be to make x and y public or use struct keyword but that would defeat the purpose of having getters and setters(setX and setY).

CodePudding user response:

Class members (as opposed to struct members) are private by default so you can't directly access Point::x and Point::y outside of the definition of Point; however, you have defined getters for those values which are public.

  • Related