Here is the member operator+ that works for
For
Pair p1(2,3); Pair p; p = p1 + 1;
Here is the member operator+ that works
Pair Pair::operator+(d)
{
int xval = x + d;
int yval = y + d;
return Pair(xval, yval);
}
The non-member operator+ that would work for
Pair p1(2,3); Pair p; p = 1 + p;
might be expected to be
Pair operator+(int d, const Pair& other)
{
int xval = d + other.x;
int yval = d + other.y;
return Pair(xval, yval);
}
But other.x is illegal!
Since this operator+ is not a member function it can't access the private members of Pair!