pointers_to_members

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Específicos de C++

Especifica si un puntero a un miembro de una clase se puede declarar antes que su definición de clase asociada y se utiliza para controlar el tamaño de puntero y el código requerido para interpretar el puntero.

  
#pragma pointers_to_members( pointer-declaration, [most-general-representation] )  

Puede colocar una pragma pointers_to_members en el archivo de código fuente como alternativa al uso de las opciones de compilador /vmx o las palabras clave de herencia.

El argumento pointer-declaration especifica si se ha declarado un puntero a un miembro antes o después que la definición de función asociada. El argumento pointer-declaration es uno de los dos símbolos siguientes:

ArgumentoComentarios
full_generalityGenera código seguro, a veces no optimo. Debe utilizar full_generality si un puntero a un miembro se declara antes que la definición de clase asociada. Este argumento siempre usa la representación de puntero especificada por el argumento most-general-representation. Equivalente a /vmg.
best_caseGenera código seguro y óptimo que usa la representación best-case para todos los punteros a miembros. Requiere que se defina la clase antes de declarar un puntero a un miembro de la clase. El valor predeterminado es best_case.

El argumento most-general-representation especifica la representación más pequeña de puntero que el compilador puede utilizar de forma segura para hacer referencia a cualquier puntero a un miembro de una clase en una unidad de traducción. El argumento puede ser uno de los siguientes:

ArgumentoComentarios
single_inheritanceLa representación más general es single-inheritance, puntero a una función miembro. Produce un error si el modelo de herencia de una definición de clase para la que se declara un puntero a un miembro es múltiple o virtual.
multiple_inheritanceLa representación más general es multiple-inheritance, puntero a una función miembro. Produce un error si el modelo de herencia de una definición de clase para la que se declara un puntero a un miembro es virtual.
virtual_inheritanceLa representación más general es virtual-inheritance, puntero a una función miembro. Nunca produce un error. Este es el argumento predeterminado cuando se utiliza #pragma pointers_to_members(full_generality).
System_CAPS_ICON_caution.jpg Precaución

Se aconseja colocar la pragma pointers_to_members solo en el archivo de código fuente al que desea que afecte, y solo después de directivas #include. Esta práctica reduce el riesgo de que la pragma afecte a otros archivos, y de que especifique accidentalmente varias definiciones para la misma variable, función o nombre de clase.

//   Specify single-inheritance only  
#pragma pointers_to_members( full_generality, single_inheritance )  

Directives pragma y la palabra clave __pragma

Mostrar: