Aviso do compilador (nível 1) C4383
'instance_dereference_operator': o significado de desreferenciar um identificador pode mudar quando um operador 'operator' definido pelo usuário existir; grave o operador como uma função estática para ser explícito sobre o operando
Quando você adiciona uma substituição de instância definida pelo usuário do operador de desreferência em um tipo gerenciado, você potencialmente substitui a capacidade do operador de desreferência do tipo de retornar o objeto do identificador. Considere escrever um operador de desreferência estático definido pelo usuário.
Para obter mais informações, consulte Operador de Identificador para Objeto (^) e Operador de Referência de Rastreamento.
Além disso, um operador de instância não está disponível para outros compiladores de linguagem por meio de metadados referenciados. Para saber mais, consulte Operadores definidos pelo usuário (C++/CLI).
Exemplo
O exemplo a seguir gera o erro 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;
}