A typical use case for this is to pass C API callbacks to object instances in a C ++ project.
// declared in some external C API typedef void __stdcall EnumDataCallback( void* context, void* data ); void EnumData( EnumDataCallback* callback, void* context ); // in consuming C++ Project class MyDataManager { public: void PollData() { ::EnumData( &MyObject::StaticEnumData, this ); } private: static void __stdcall StaticEnumData( void* context, void* data ) { MyDataManager* instance = (MyDataManager*)(context); instance->EnumData( data ); } void EnumData( void* data ) { // actual callback code } };
Smocode
source share