Avertissement du compilateur (niveau 1) C4383
'instance_dereference_operator' : la signification de la déréférence d’un handle peut changer, lorsqu’un opérateur 'operator' défini par l’utilisateur existe ; écrire l’opérateur en tant que fonction statique pour être explicite sur l’opérande
Lorsque vous ajoutez un remplacement d’instance défini par l’utilisateur de l’opérateur de déréférencement dans un type managé, vous pouvez éventuellement remplacer la capacité de l’opérateur de déréférencement du type à retourner l’objet du handle. Envisagez d’écrire un opérateur de déréférencement statique défini par l’utilisateur.
Pour plus d’informations, consultez Handle to Object Operator (^) et Tracking Reference Operator.
En outre, un opérateur d’instance n’est pas disponible pour d’autres compilateurs de langage via des métadonnées référencées. Pour plus d’informations, consultez Opérateurs définis par l’utilisateur (C++/CLI).
Exemple
L’exemple suivant génère l’erreur 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;
}