У меня странная ошибка, когда я пытаюсь скомпилировать этот фрагмент кода. Я объясню свою проблему.
я определил vector2D следующим образом:проблема с комбинацией: оператор '==' и оператор '-'
typedef struct LX_Vector2D
{
float vx;
float vy;
LX_Vector2D& operator =(const LX_Vector2D v); // Defined
} LX_Vector2D;
Я также определил два оператора на этом векторе:
bool operator ==(LX_Vector2D& u,LX_Vector2D& v); // Are u and v equal?
LX_Vector2D operator -(LX_Vector2D& u); // Get the opposite vector
Все эти перегруженных операторов была определена.
Так я тестировал эти операторы в следующем коде:
LX_Vector2D u = {3.14,-2.56};
LX_Vector2D expected_vec = {-u.vx,-u.vy};
if(expected_vec == (-u)) // ERROR
cout << "OK" << endl;
else
cout << "NO" << endl;
Когда я скомпилировать этот код, у меня есть эта ошибка:
нет ровня «оператора ==» в «expected_vec == operator- ((* & и))»
у меня нет никаких проблем с„=“и„==“, потому что я определил и протестировали их, прежде чем я осуществил„-“.
Но когда я изменить этот код, чтобы получить это:
u = -u;
if(expected_vec == u) // OK
У меня нет ошибки. Я этого не понимаю, потому что кажется, что эти два фрагмента кода семантически идентичны.
Вот определение оператора '-':
LX_Vector2D operator -(LX_Vector2D& u)
{
return {-u.vx,-u.vy};
}
Так что мой вопрос:
Почему не мой компилятор признает 'expected_vec == (-u)' как звонок оператор '==' с expected_vec и (-u) как параметры?
Другой вопрос:
Как я могу иметь возможность использовать если (expected_vec == (-u)) без каких-либо проблем, если это возможно?
Я использую g ++ 4.6.1.
Не могли бы вы отредактировать свой вопрос, включив в него * полный вывод ошибки, потому что то, что вы показываете нам, должно быть не всем. –
Не могли бы вы рассказать нам, кто научил вас говорить «typedef struct», чтобы мы могли создать большую зону карантина вокруг этого человека? –
Не имеет прямого отношения к вашему вопросу, но ваше задание должно принимать const-ссылку. В настоящее время он передается по значению. Кроме того, я думаю, что ваш оператор должен вернуть ссылку. –