Kompilatorfel C2804

binär 'operator operator' har för många parametrar

Anmärkningar

Den överlagrade medlemsfunktionen för binär operatör deklareras med mer än en parameter. Den första operandparametern för en binär operatormedlemsfunktion, vars typ är operatorns omslutande typ, är underförstådd.

Examples

I följande exempel genereras C2804 och hur du åtgärdar det.

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

I följande exempel genereras C2804 och hur du åtgärdar det.

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