Listing 3
class DynamicObject { private: // Callback function that should be called to delete dynamic object void (*_deleteObject)(void*); public: // The constructor sets the callback function to use DynamicObject(void (*delObj)(void*)); // The destructor virtual ~DynamicObject(void); // Sends "this" to the callback destructor function. void deleteSelf(void); }; DynamicObject::DynamicObject(void (*delObj)(void*)) : _deleteObject(delObj) { } DynamicObject::~DynamicObject(void) { } void DynamicObject::deleteSelf(void) { (*_deleteObject)(reinterpret_cast<void*>(this)); }