_set_purecall_handler
Establece el controlador de una llamada de función virtual pura.
_purecall_handler _set_purecall_handler( _purecall_handler function );
Parámetros
- function
Función a la que se llamará cuando se llame a una función virtual pura. Una función _purecall_handler debe tener un tipo de valor devuelto void.
Valor devuelto
_purecall_handler anterior. Devuelve NULL si no había controlador anterior.
Comentarios
Use _set_purecall_handler si quiere detectar funciones virtuales puras e informar al usuario al respecto de una forma específica o bien detectarlas con fines de depuración.
Como hay un _purecall_handler para todo el proceso, llamar a esta función tiene un impacto inmediato en todos los subprocesos. El último que llama en cualquiera de los subprocesos establece el controlador.
Solo hay un controlador _set_purecall_handler para todos los ejecutables y DLL vinculados dinámicamente; incluso si se llama a _set_purecall_handler, es posible que el controlador se reemplace por otro establecido por otro ejecutable o DLL.
Para restaurar el comportamiento predeterminado, llame a _set_purecall_handler con un argumento NULL.
Requisitos
Rutina |
Encabezado necesario |
---|---|
_set_purecall_handler |
<stdlib.h> |
Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.
Ejemplo
// _set_purecall_handler.cpp
// compile with: /W1
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
class CDerived;
class CBase
{
public:
CBase(CDerived *derived): m_pDerived(derived) {};
~CBase();
virtual void function(void) = 0;
CDerived * m_pDerived;
};
class CDerived : public CBase
{
public:
CDerived() : CBase(this) {}; // C4355
virtual void function(void) {};
};
CBase::~CBase()
{
m_pDerived -> function();
}
void myPurecallHandler(void)
{
printf("In _purecall_handler.");
exit(0);
}
int _tmain(int argc, _TCHAR* argv[])
{
_set_purecall_handler(myPurecallHandler);
CDerived myDerived;
}
Equivalente en .NET Framework
No es aplicable. Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.