Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Collapse the table of content
Expand the table of content


Sets the handler for a pure virtual function call.

_purecall_handler _set_purecall_handler( 
   _purecall_handler function


The function to be called when a pure virtual function is called. A _purecall_handler function should have a void return type.

Return Value

The previous _purecall_handler. Returns NULL if there was no previous handler.


Use _set_purecall_handler if you want to catch pure virtual functions and report them to the user in a specific way or catch them for debugging purposes.

There is one _purecall_handler for the whole process, so calling this function will immediately impact all threads. The last caller on any thread will set the handler.

There is a single _set_purecall_handler handler for all dynamically linked DLLs or EXEs; even if you call _set_purecall_handler your handler may be replaced by another or that you are replacing a handler set by another DLL or EXE.


Routine Required header Compatibility
_set_purecall_handler <stdlib.h> Win 98, Win Me, Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.


// _set_purecall_handler.cpp
// compile with: /W1
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>

class CDerived;
class CBase
   CBase(CDerived *derived): m_pDerived(derived) {};
   virtual void function(void) = 0;

   CDerived * m_pDerived;

class CDerived : public CBase
   CDerived() : CBase(this) {};   // C4355
   virtual void function(void) {};

   m_pDerived -> function();

void myPurecallHandler(void)
   printf("In _purecall_handler.");

int _tmain(int argc, _TCHAR* argv[])
   CDerived myDerived;


In _purecall_handler.

See Also

Error Handling

© 2015 Microsoft