Liste de vérification pour la mise à niveau de la syntaxe des extensions managées pour C++
Mise à jour : novembre 2007
Pour Visual C++ 2005, Visual C++ propose des fonctionnalités permettant de cibler les machines virtuelles avec le garbage collection, comme .NET Framework. Pour Visual C++ 2008, la prise en charge des extensions managées pour C++ est désapprouvée et sera peut être supprimée complètement dans une prochaine version.
Le code utilisant les extensions managées pour C++ peut toujours être compilé avec /clr:oldSyntax. Pour plus d'informations à ce sujet, consultez /clr (Compilation pour le Common Language Runtime). Pour plus d'informations sur l'utilisation de la nouvelle syntaxe, consultez :
Cette rubrique répertorie les différences syntaxiques entre les extensions managées pour C++ et la nouvelle syntaxe Visual C++.
Pour mettre à jour le code des extensions managées pour C++
Supprimez #using <mscorlib.dll>. (Cet assembly est désormais référencé par défaut.)
Remplacez __gc class par ref class.
Remplacez __gc struct par ref struct.
Remplacez __value class par value class.
Remplacez __value struct par value struct.
Supprimez les constructeurs par défaut des classes value. (Les constructeurs par défaut pour les types valeur sont autorisés dans les extensions managées pour C++, mais la nature du CLR ne permet pas de les appeler de manière fiable ; par conséquent, cette fonctionnalité a été supprimée.)
Pour plus d'informations sur les types référence et valeur, consultez Classes and Structs (Managed).
- Remplacez __gc __interface par interface class.
Pour plus d'informations sur le mot clé interface, consultez interface class.
Remplacez __abstract par abstract et déplacez-le après le nom de la classe. Pour plus d'informations, consultez abstract (Visual C++).
Remplacez __sealed par sealed et déplacez-le après le nom de la classe. Pour plus d'informations, consultez sealed.
Remplacez __property par property, combinez les méthodes get et set dans un bloc de propriétés unique et supprimez le suffixe constitué d'une barre de soulignement/nom situé à la fin de ces accesseurs. Pour les propriétés simples, les accesseurs ne doivent pas être définis explicitement. La syntaxe des propriétés indexées exige des parenthèses après le type de propriété. Pour plus d'informations, consultez How to: Use Simple Properties et How to: Use Indexed Properties.
Remplacez __event par event (Visual C++).
Remplacez __value enum par enum class.
Remplacez les pointeurs vers des types référence suivis (définis avec __gc*) par ^. Pour plus d'informations, consultez ^ (Handle to Object on Managed Heap).
Remplacez les pointeurs vers les types valeur susceptibles de résider dans le tas récupéré par le garbage collector par interior_ptr.
Remplacez les pointeurs déclarés avec __pin par des instances de pin_ptr, à moins qu'un objet entier soit épinglé (dans ce cas, utilisez interior_ptr, puis pin_ptr sur le pointeur intérieur). Pour Visual C++ 2005, ce modèle est défini dans cli Namespace.
Remplacez new par gcnew.
Remplacez 0 ou null par nullptr lorsqu'il est utilisé pour signaler qu'un pointeur ou un handle contenu dans le tas récupéré par le garbage collector n'indique pas d'objet et lors de l'utilisation de comparaisons pour vérifier des pointeurs et des handles.
Mettez à jour des tableaux récupérés par le garbage collector déclarés avec __gc[] pour utiliser le type array (Visual C++). Pour Visual C++ 2005, ce modèle est défini dans cli Namespace.
Supprimez toutes les instances de __box. Pour plus d'informations, consultez Implicit Boxing.
Supprimer le préfixe "S" des littéraux de chaîne (le compilateur détermine désormais si une chaîne est littérale selon le contexte dans lequel elle est utilisée.)
Remplacez la déclaration explicite et l'utilisation d'opérateurs surchargés nécessaires dans les extensions managées pour C++ (par exemple op_Addition, op_Subtraction) par la syntaxe C++ traditionnelle. Pour plus d'informations, consultez User-Defined Operators et Operator Overloading.
Mettez à jour les opérateurs de conversion (qui utilisent op_Implicit et op_Explicit dans la syntaxe des extensions managées pour C++). Pour plus d'informations, consultez User-Defined Conversions.
Remplacez __try_cast par safe_cast. Pour Visual C++ 2005, ce modèle est défini dans cli Namespace.
Si vous signiez votre assembly (également appelé attribution d'un nom fort à votre assembly) avec les attributs de signature d'assembly du CLR, vous devez supprimer ces attributs de votre code et utilisez à la place les options de l'éditeur de liens de signature d'assembly. Pour plus d'informations, consultez Assemblys de nom fort (signature d'assembly).