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); };