Compartir a través de


/vmm, /vms, /vmv (Representación de propósito general)

Se usa cuando /vmg se selecciona como método de representación. Estas opciones indican el modelo de herencia de la definición de clase no encontrada aún.

Sintaxis

/vmm
/vms
/vmv

Opciones

/vmm
Especifica la representación más general de un puntero a un miembro de una clase como una que usa varias herencias.

La palabra clave y el argumento de herencia correspondientes a #pragma pointers_to_members es multiple_inheritance.

Esta representación es mayor que la necesaria para la herencia única.

Si usa /vmm y declara un puntero a un miembro de una clase que tiene un modelo de herencia virtual, el compilador genera un error.

/vms
Especifica la representación más general de un puntero a un miembro de una clase como una que no usa herencia o herencia única. La palabra clave y el argumento de herencia correspondientes a #pragma pointers_to_members es single_inheritance.

Esta opción genera la representación más pequeña posible de un puntero a un miembro de una clase.

Si usa /vms y declara un puntero a un miembro de una clase que tiene un modelo de herencia múltiple o virtual, el compilador genera un error.

/vmv
Especifica la representación más general de un puntero a un miembro de una clase como una que usa la herencia virtual. Esta representación de puntero nunca produce un error y es el valor predeterminado.

La palabra clave y el argumento de herencia correspondientes a #pragma pointers_to_members es virtual_inheritance.

Esta opción requiere un puntero mayor y más código para interpretar el puntero que las demás opciones.

Comentarios

En Visual Studio 2019 y versiones anteriores, Microsoft usa representaciones diferentes (de tamaños diferentes) para tipos de puntero a miembro. Punteros a miembros de clases que no tienen herencia o herencia única tienen la representación más pequeña. Los punteros a los miembros de las clases que tienen varias herencias son mayores. Los punteros a los miembros de las clases que tienen herencia virtual son los más grandes. Cuando no se especifica ningún modelo de representación en el compilador, el valor predeterminado es usar la representación más grande y general.

Al especificar una de estas opciones de modelo de herencia, ese modelo se usa para todos los punteros a los miembros de clase, independientemente de su tipo de herencia o si declara el puntero antes o después de la clase. Si siempre usa clases de herencia única, puede reducir el tamaño del código mediante la compilación con /vms. Sin embargo, si desea usar el caso más general (a costa de la representación de datos más grande), compile con /vmv.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. Escriba la opción del compilador en el cuadro Opciones adicionales.

Para establecer esta opción del compilador mediante programación

Consulte también

/vmb, /vmg (método Representation)
Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC