Each non-static member function of a class has an implicit parameter that takes the value of this , that is, a pointer to the class object itself.
You need to either define this operator in the class as a friendly function (if you need access to closed or protected members of the class), for example
friend MyClass operator+(const MyClass &a, const MyClass &b) { ... return a.value + b.value; }
Or declare it as a normal function outside the class, if you do not need to refer to private or protected members of the class.
Either make the operator a member function of a class, but with one explicit parameter
MyClass operator+( const MyClass &b) const { ... return this->value + b.value; }