Dela via


Kompilatorvarning (nivå 1) C4383

"instance_dereference_operator" : innebörden av att avreferera en handle kan ändras när en användardefinierad operator finns, skriv operatorn som en statisk funktion för att vara explicit om operanden.

Anmärkningar

När du lägger till en användardefinierad åsidosättning av dereferenceoperatorn i en hanterad typ kan du åsidosätta möjligheten för typens dereferenceoperator att returnera referensobjektet. Överväg att skriva en statisk, användardefinierad dereferenceoperator.

Mer information finns i Hantera till objektoperator (^) och spårningsreferensoperator.

Dessutom är en instansoperator inte tillgänglig för andra språkkompilatorer via refererade metadata. För mer information, se User-Defined Operators (C++/CLI).

Example

I följande exempel genereras C4383.

// C4383.cpp
// compile with: /clr /W1

ref struct S {
   int operator*() { return 0; }   // C4383
};

ref struct T {
   static int operator*(T%) { return 0; }
};

int main() {
   S s;
   S^ pS = %s;

   T t;
   T^ pT = %t;
   T% rT = *pT;
}