Compiler Error C2804

binary 'operator operator' has too many parameters

The overloaded binary operator is declared with more than one parameter. The first parameter of a binary operator, whose type is the operator's enclosing type, is implied.

Example

The following sample generates C2804.

// C2804.cpp
// compile with: /c
class X {
public:
   X operator+ ( X , X );   // C2804 two parameters
   X operator+ ( X );   // para1 type implicitly X&, para2 type 'X'
};

int main() {
   X x, y;
   x + y;   // equivalent to x.operator+(y)
}

The following sample generates C2804.

// C2804_2.cpp
// compile with: /clr /c
ref struct Y {
   Y^ operator +(Y^ hY, int i);   // C2804
   static Y^ operator +(Y^ hY, int i);   // OK
   Y^ operator +(int i);   // OK
};