Teilen über


Compilerfehler C2804

Der binäre Operator „operator“ hat zu viele Parameter

Bemerkungen

Die überladene binäre Operator-Memberfunktion wird mit mehr als einem Parameter deklariert. Der erste Parameter für Operanden einer binären Operator-Memberfunktion, deren Typ des Operators ist einschließender Typ ist, wird impliziert.

Beispiele

Im folgenden Beispiel wird C2804 generiert und es wird gezeigt, wie dieser behoben werden kann.

// C2804.cpp
// compile by using: cl /c /W4 C2804.cpp
class X {
public:
   X& operator+= (const X &left, const X &right);   // C2804
   X& operator+= (const X &right);   // OK - left operand implicitly *this
};

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

Im folgenden Beispiel wird C2804 generiert und veranschaulicht, wie sie behoben werden kann.

// 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
};