Freigeben über


Compilerwarnung (Ebene 1) C4383

"instance_dereference_operator" : die Bedeutung der Ableitung eines Handles kann sich ändern, wenn ein benutzerdefinierter Operator "Operator" vorhanden ist; schreiben Sie den Operator als statische Funktion, um explizit über den Operanden zu sein.

Wenn Sie eine benutzerdefinierte Instanzüberschreibung des Ableitungsoperators in einem verwalteten Typ hinzufügen, überschreiben Sie möglicherweise die Fähigkeit des Ableitungsoperators des Typs, das Handle-Objekt zurückzugeben. Erwägen Sie das Schreiben eines statischen, benutzerdefinierten Ableitungsoperators.

Weitere Informationen finden Sie unter Handle to Object Operator (^) und Tracking Reference Operator.

Außerdem ist ein Instanzoperator nicht für andere Sprachcompiler über referenzierte Metadaten verfügbar. Weitere Informationen finden Sie unter User-Defined Operators (C++/CLI).For more information, see User-Defined Operators (C++/CLI).

Beispiel

Im folgenden Beispiel wird C4383 generiert.

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