проблема с перегрузкой operator+=

Компьютеры программирование программы C++ ООП

Я не новичок но тем немение возникли непонятки, я немогу понять чтоже я упустил.
Если убрать (float)t из velociti += accseleration * t; то всьо гуд, но operator*(float) возвращает Vector2f.

class Vector2f
{
public:
float x,y;

Vector2f &operator+=(Vector2f&);
Vector2f operator*(float);
};

Vector2f &Vector2f::operator+=(Vector2f &v2)
{
x += v2.x;
y += v2.y;
return *this;
}

Vector2f Vector2f::operator*(float v2)
{
Vector2f v3;
v3.x = x * v2;
v3.y = y * v2;
return v3;
}

class Bullet
{
public:
Vector2f position,velociti,accseleration;
void Move(float);
};
void Bullet::Move(float t)
{
velociti += accseleration * t; // error: no match for 'operator+=' in '((Bullet*)this)->Bullet::velociti += ((Bullet*)this)->Bullet::accseleration.Vector2f::operator*(t)'
position += velociti * t;
}
Ответы:
accseleration * t - вернет временный объект, а он может передаваться только по константной ссылке, добавьте в const к аргументу operator+=


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.