выражение должно быть допустимым для изменения левосторонним значением в C++(класс)
#include <iostream>
#include <cstring>
using namespace std;
class Move
{
private:
double x;
double y;
public:
Move(double a = 0, double b = 0);// Это конструктор которая прибавляет a и b, x и y
void showmove() const;// Показывает значения x y
Move add(const Move &m) const;// Прибавляет x (из m) вызывающему объекту x, а y(из вызывающего объекта) прибавляется с m.y и присваиваться y из вызывающего объекта.
void reset(double a = 0, double b = 0);// переустанавливает значения x и y
};
Move::Move(double a = 0, double b = 0)
{
x = a;
y = b;
}
void Move::showmove() const
{
cout << "X: " << x << endl;
cout << "Y: " << y << endl;
}
Move Move::add(const Move &m) const
{
x = m.x;
y += m.y;
Move mv = Move(x, y);
return mv;
}
void Move::reset(double a = 0, double b = 0)
{
x = a;
y = b;
}
int main()
{
Move first = Move(10.3, 12.5);
Move second = Move(5.7, 8.4);
cout << "First Object:\n";
first.showmove();
cout << "Second Object:\n";
second.showmove();
first.add(second);
cout << "After changing:\n";
first.showmove();
return 0;
}
Привет всем, я написал код в котором есть класс и у неё есть функция элементы а также один конструктор (я написал в коде что они выполняют) но вот в строке 17, 18 указывая на x и y(где определятся функция элемент add) пишет что выражение должно быть допустимым для изменения левосторонним значением. Я новичок в классах и не знаю почему так пишет(с this-> одинаковое пишет), был бы рад вашей помощи, заранее благодарен ;)
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Определение метода константным
Move Move::add(const Move &m) const
запрещает изменение объекта. А переменные x и y это часть объекта, и их нельзя менять.
Уберите константность :
Move Move::add(const Move &m)