Advertencia del compilador (nivel 1) C4383
"instance_dereference_operator": el significado de desreferenciar un identificador puede cambiar cuando existe un operador "operator" definido por el usuario; escriba el operador como función estática para que sea explícito respecto del operando
Al agregar una invalidación de instancia definida por el usuario del operador de desreferencia en un tipo administrado, podría invalidar la capacidad del operador de desreferencia del tipo para devolver el objeto del identificador. Considere la posibilidad de escribir un operador de desreferencia estático definido por el usuario.
Para más información, consulte Operador de identificador de objeto (^) y Operador de referencia de seguimiento.
Además, un operador de instancia no está disponible para otros compiladores de lenguaje a través de metadatos a los que se hace referencia. Para obtener más información, vea Operadores definidos por el usuario (C++/CLI).
Ejemplo
El ejemplo siguiente genera la advertencia 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;
}