Не работает конструктор по умолчанию для класса C++
Почему-то пишет что для temp нет конструктора по умолчанию, хотя, насколько я понимаю, он у меня есть прямо наверху над оператором.
#include
using namespace std;
class Point
{
private:
int x;
int y;
public:
Point(int x, int y)
{
this->x = x;
this->y = y;
cout << this << "constructor" << endl;
}
Point operator +(const Point& other)
{
Point temp;
temp.x = this->x + other.x;
temp.y = this->y + other.y;
return temp;
}
void Print()
{
cout << "x = " << "\t" << x << "\n" << "y = \t" << y << endl;
}
void SetX(int valueX)
{
this->x = x;
}
void SetY(int valueY)
{
this->y = y;
}
int GetX()
{
return x;
}
int GetY()
{
return y;
}
};
int main()
{
Point a(5, 1);
Point b(9, 4);
Point sum = a + b;
cout << endl << endl;
return 0;
}

У тебя есть конструктор с параметрами, а конструктора по-умолчанию нет, потому переменная temp ( а ниже sum ) не может быть создана
Поменяй
Point(int x, int y)
на
Point(int x=0, int y=0)
PS: еще можно заменить
Point operator +(const Point& other)
{
Point temp;
temp.x = this->x + other.x;
temp.y = this->y + other.y;
return temp;
}
на
Point operator +(const Point& other)
{
return Point(this->x + other.x,this->y + other.y);
}
public: Point() : x(0), y(0) {}
Нет, наверху у тебя конструктор с параметрами Point( int, int)
Если ты хоть один конструктор объявил - либо добавляй и конструктор по-умолчанию, либо сделай этот с параметрами по-умолчанию.
Если не хочешь, чтобы Point без параметров можно было создать - пихни конструктор в private/protected
Или параметры по-умолчанию:
Point( int x = 0, int y = 0 )
{...}