Extensiones administradas para la lista de comprobación de actualizaciones de sintaxis de C++

Actualización: noviembre 2007

En Visual C++ 2005, Visual C++ incluye características para tomar como destinos máquinas virtuales con recolección de elementos no utilizados, tales como .NET Framework. En Visual C++ 2008, la compatibilidad con Extensiones administrados para C++ ha quedado obsoleta y se quitará completamente en una futura versión.

El código que utiliza las Extensiones administradas para C++ todavía se puede compilar con /clr:oldSyntax. Para obtener más información, vea /clr (Compilación de Common Language Runtime). Para obtener más información sobre cómo utilizar la nueva sintaxis, vea:

En este tema, se indican las diferencias sintácticas entre las Extensiones administradas para C++ y la nueva sintaxis de Visual C++.

Para actualizar el código de las Extensiones administradas para C++

  • Quite #using <mscorlib.dll>. (Ahora se hace referencia a este ensamblado de manera predeterminada.)

  • Reemplace __gc class por ref class.

  • Reemplace __gc struct por ref struct.

  • Reemplace __value class por value class.

  • Reemplace __value struct por value struct.

  • Quite los constructores predeterminados de las clases de valor. (Las Extensiones administradas para C++ permiten constructores predeterminados para tipos de valor, pero la naturaleza de CLR impide que se les pueda llamar de manera confiable, por lo que se ha quitado la función.)

Para obtener más información sobre tipos de referencia y de valor, vea Classes and Structs (Managed).

  • Reemplace __gc __interface por interface class.

Para obtener más información sobre la palabra clave interface, vea interface class.

  • Reemplace __abstract por abstract y muévalo detrás del nombre de la clase. Para obtener más información, consulte abstract (Visual C++).

  • Reemplace __sealed por sealed y muévalo detrás del nombre de la clase. Para obtener más información, vea sealed.

  • Reemplace __property con property, combine los métodos get y set en un solo bloque de propiedades y quite el sufijo final de carácter de subrayado/nombre de estos descriptores de acceso. Para las propiedades simples, no es necesario definir los descriptores de acceso explícitamente. La sintaxis para propiedades indizadas requiere pares de corchetes detrás del tipo de propiedad. Para obtener más información, vea How to: Use Simple Properties y How to: Use Indexed Properties.

  • Reemplace __event con event (Visual C++).

  • Reemplace __value enum por enum class.

  • Reemplace los punteros a tipos de referencia seguidos (definidos con __gc*) por ^. Para obtener más información, consulte ^ (Handle to Object on Managed Heap).

  • Reemplace por interior_ptr los punteros a tipos de valor que potencialmente residen en el montón de elementos no utilizados recogidos.

  • Reemplace los punteros declarados con __pin por instancias de pin_ptr, excepto si se va a fijar un objeto completo, en cuyo caso, utilice interior_ptr y, a continuación, pin_ptr en el puntero interior. En Visual C++ 2005, esta plantilla se define en el cli Namespace.

  • Reemplace new por gcnew.

  • Reemplace 0 o null por nullptr cuando se use para indicar que un puntero o un identificador del montón de elementos no utilizados recogidos no indica un objeto, y cuando se utilicen comparaciones para comprobar punteros e identificadores.

  • Actualice las matrices recogidas como elementos no utilizados declaradas con __gc[] para utilizar el tipo array (Visual C++). En Visual C++ 2005, esta plantilla se define en el cli Namespace.

  • Quite todas las instancias de __box. Para obtener más información, vea Implicit Boxing.

  • Quite el prefijo "S" de los literales de cadena (ahora, el compilador determina si una cadena se basa en literales en el contexto en el que se utiliza).

  • Reemplace la declaración explícita y el uso de operadores sobrecargados requeridos en las Extensiones administradas para C++ (como op_Addition, op_Subtraction) por la sintaxis de C++ tradicional. Para obtener más información, vea User-Defined Operators y Operator Overloading.

  • Actualice los operadores de conversión (que utilizan op_Implicit y op_Explicit en la sintaxis de las Extensiones administradas para C++). Para obtener más información, vea User-Defined Conversions.

  • Reemplace __typeof con typeid.

  • Reemplace __try_cast por safe_cast. En Visual C++ 2005, esta plantilla se define en el cli Namespace.

  • Si firma el ensamblado (o lo que es lo mismo, asigna al ensamblado un nombre seguro) con los atributos de firma de ensamblados de CLR, debe quitar dichos atributos del código y utilizar en su lugar las opciones del vinculador de firma de ensamblados. Para obtener más información, vea Ensamblados de nombre seguro (Firma de ensamblados).

Vea también

Conceptos

Ensamblados mixtos (nativos y administrados)

Language Features for Targeting the CLR