Freigeben über


Compilerfehler C2676

binärer 'Operator' : 'type*' definiert diesen Operator nicht oder eine Konvertierung in einen Typ, der für den vordefinierten Operator akzeptabel ist.

Hinweise

Um den Operator zu verwenden, müssen Sie ihn für den angegebenen Typ überladen oder eine Konvertierung in einen Typ definieren, für den der Operator definiert ist.

Beispiele

Im folgenden Beispiel wird C2676 generiert.

// C2676.cpp
// C2676 expected
struct C {
   C();
} c;

struct D {
   D();
   D operator >>( C& ){return * new D;}
   D operator <<( C& ){return * new D;}
} d;

struct E {
   // operator int();
};

int main() {
   d >> c;
   d << c;
   E e1, e2;
   e1 == e2;   // uncomment operator int in class E, then
               // it is OK even though neither E::operator==(E) nor
               // operator==(E, E) defined. Uses the conversion to int
               // and then the builtin-operator==(int, int)
}

C2676 kann auch bei dem Versuch auftreten, im this-Zeiger eines Referenztyps eine Zeigerarithmetik auszuführen.

Der this-Zeiger tritt in einem Referenztyp als Handletyp auf. Weitere Informationen finden Sie unter Semantik des this Zeigers.

Im folgenden Beispiel wird C2676 generiert.

// C2676_a.cpp
// compile with: /clr
using namespace System;

ref struct A {
   property Double default[Double] {
      Double get(Double data) {
         return data*data;
      }
   }

   A() {
      Console::WriteLine("{0}", this + 3.3);   // C2676
      Console::WriteLine("{0}", this[3.3]);   // OK
   }
};

int main() {
   A ^ mya = gcnew A();
}