Delen via


Compilerfout C2676

binaire operator: 'type*' definieert deze operator niet of een conversie naar een type dat acceptabel is voor de vooraf gedefinieerde operator

Opmerkingen

Als u de operator wilt gebruiken, moet u deze overbelasten voor het opgegeven type of een conversie definiƫren naar een type waarvoor de operator is gedefinieerd.

Voorbeelden

In het volgende voorbeeld wordt C2676 gegenereerd.

// 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 kan ook optreden als u probeert aanwijzerberekeningen uit te voeren op de this aanwijzer van een verwijzingstype.

De this aanwijzer is van het type handle binnen een referentietype. Zie Semantiek van de this aanwijzer voor meer informatie.

In het volgende voorbeeld wordt C2676 gegenereerd.

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