Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais
Nous recommandons d’utiliser Visual Studio 2017

Avertissement du compilateur (niveau 1) C4303

'cast' de 'type1' vers 'type2' est déconseillé, utilisez static_cast, __try_cast ou dynamic_cast

Le cast de type style C ou style fonction n'est pas pris en charge lors de l'utilisation des Extensions managées pour C++. Pour effectuer un cast de type, vous pouvez utiliser l'opérateur dynamic_cast ou l'opérateur static_cast.

L'erreur C4303 n'est pas accessible à l'aide de /clr et de la nouvelle syntaxe ; consultez Casts de style C avec /clr (C++/CLI) pour plus d'informations.

L'exemple suivant génère l'erreur C4303 :

// C4303.cpp
// compile with: /clr:oldSyntax /W1
__gc struct A { };
__gc struct B { };

int main() {
   B *b = new B;
   try {

   // C4303 old 'c' style cast
   A *a = (A*)b;   // C4303
   // run time exception becaused casting to incompatible types

   // try the following line instead
   // A *a = __try_cast<A*>(b);
   } 

   catch (System::InvalidCastException * e) {
      System::Console::WriteLine(e);
   }
}
Afficher: