Написание собственного класса векторов (для игрового движка) и перегрузка оператора «+» в проекте Visual Studio 2013 CPlusPlus (с использованием среды выполнения VC 120) , он бросает мне компилятор ошибки:ошибка C2804: двоичный 'оператор +' имеет слишком много параметров (компиляция с VC 120)
Error: too many parameters for this operator function.
фрагмент кода из файла Vector.hpp
ниже.
Vector.hpp
class Vector
{
private:
double i;
double j;
double k;
public:
Vector(double _i, double _j, double _k)
{
i = _i;
j = _j;
k = _k;
}
Vector& operator+=(const Vector& p1)
{
i += p1.i;
j += p1.j;
k += p1.k;
return *this;
}
//Some other functionality...
Vector operator+(const Vector& p1, Vector& p2) //Error is thrown here...
{
Vector temp(p1);
return temp += p2;
}
};
Что я здесь делаю неправильно? Не хотите, чтобы мой оператор перегружал функцию, отличную от члена.
'Вектор оператор + (сопзЬ Вектор & p1, Vector & p2)' должен быть объявить вне класса – Garf365
как функции члена он имеет 'this' неявно в качестве первого параметра, но вы хотите поставить больше два – user463035818