Error del compilador C2804
"operator operator" binario tiene demasiados parámetros
La función miembro del operador binario sobrecargado se declara con más de un parámetro. El primer parámetro de operando de una función miembro de operador binario, cuyo tipo es el tipo envolvente del operador, está implícito.
Ejemplos
La muestra siguiente genera el error C2804 y muestra cómo corregirlo.
// 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)
}
La muestra siguiente genera el error C2804 y muestra cómo corregirlo.
// 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
};