typedef void(*_APP_INFO_OUT_CALLBACK)(char* szInfo,void* pCallParam);
classCStultzLowDebug { public: CStultzLowDebug(char* szPathName, char* szAppName, //构造函数传入回调函数和参数,能够是 null _APP_INFO_OUT_CALLBACK pInfoOutCallback=null, void* pInfoOutCallbackParam=null); //保存在对象内部,方便 Debug 等功能函数调用 _APP_INFO_OUT_CALLBACK m_pInfoOutCallback; void* m_pInfoOutCallbackParam; };
CStultzLowDebug::CStultzLowDebug(char* szPathName, char* szAppName, _APP_INFO_OUT_CALLBACK pInfoOutCallback, void* pInfoOutCallbackParam) { m_pInfoOutCallback=pInfoOutCallback;//回调函数指针保存 m_pInfoOutCallbackParam=pInfoOutCallbackParam;//参数指针保存 //… }
intCStultzLowDebug::Debug2File(char*szFormat,...) { //… if(m_pInfoOutCallback)//标准写法,先判断指针有效性 { m_pInfoOutCallback(szInfoOut,//像函数同样调用 m_pInfoOutCallbackParam);//这里在帮助透传指针 } //… }
void ApplicationInfomationOutCallback(char* szInfo,void* pCallParam);
classCStultzLowDebug { private: voidApplicationInfomationOutCallback(char* szInfo,void* pCallParam); };
voidApplicationInfomationOutCallback( CStultzLowDebug*this,//这是 C++编译器在编译时强行添加的 char* szInfo, void* pCallParam);
classCStultzLowDebug { private: //请注意这里的 static 修饰 static void ApplicationInfomationOutCallback(char* szInfo,void* pCallParam); };