简体   繁体   中英

error C2248: 'point::x': cannot access private member declared in class 'point'

With this code:

#include <iostream>
using namespace std;

class point{    
public:
double get_x();
void  set_x(double v);

double get_y();
void  set_y(double z);

private:
double x, y;
};

point operator+(point& p1, point& p2)
{   
 point sum = {p1.x};// + p2.x, p1.y + p2.y};
 return sum;
}

int main()
{
 point a = {3.5,2.5}, b = {2.5,4.5}, c;
}

I get the following compiler errors saying the private members cannot be accessed:

point.cpp(22): error C2248: 'point::x': cannot access private member declared in class 'point' point.cpp(17): note: see declaration of 'point::x' point.cpp(8): note: see declaration of 'point'

I am pretty new to C++ and can't seem to figure out how to resolve this issue. Any help is much appreciated.

You declared x and y as private so they can't be accessed in that function(or outside the class) unless you make that function a friend of the class, but if you want to overload the + operator, you should do it inside the class, something like this:

class point
{
public:
    point(double x, double y) // CONSTRUCTOR
        :x(x), y(y)
    {

    }
    double get_x(){
        return x;
    };
    void set_x(double v)
    {
        x = v;
    };

    double get_y(){
        return y;
    };
    void set_y(double z)
    {
        y = z;
    };

    point operator+(point &obj)
    {
        double newX = this->x + obj.get_x();
        double newY = this->y + obj.get_y();

        point sum{newX, newY};
        return sum;
    };
private:
    double x, y;
};

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM