【C++语法】错误收集器如何做
eion 2002-03-08 03:45:49 如何实现下面的功能:
首要目标:程序运行时错误信息的收集,并显示和记录;
描述:
先看代码:
---------------------------------------------
static void (*g_fpErrMsgProcessor)(char*)=NULL;//定义一个全局的指向函数的变量,初值为0
void AfxRegisterErrorMsgProcessor( void (*fp)(char*) )//这个函数负责给它赋值
{
g_fpErrMsgProcessor = fp;
}
void AfxSendErrorMessage(char *sErrMsg)//大家都调用的一个接口函数
{
if( NULL!=g_fpErrMsgProcessor) g_fpErrMsgProcessor(sErrMsg);//对注册函数的具体调用
}
void Test_ErrorMsgProcessor(char *errMsg)//测试用的错误处理函数
{
AfxMessageBox(errMsg);
}
class AA
{
public: void Test()
{
try{................}
catch(CException *e){
AfxSendErrorMessage("AA::Test Error");} //在此对错误进行报告
}
};
class BB
{
public: void Test()
{
try{................}
catch(CException *e){
AfxSendErrorMessage("BB::Test Error");} //在此对错误进行报告
}
};
void main()
{
AfxRegisterErrorMsgProcessor(Test_ErrorMsgProcessor);//注册错误处理函数
AA a; BB b;
a.Test(); B.Text();//如果有错被catch到的话,应该有错误提示
}
----------------------------------------
大家应该看懂了,我是想在程序的任何地方可以调用AfxSendErrorMessage来报告错误,而
只需要在一个函数Test_ErrorMsgProcessor里进行处理就OK了。这个上面的代码可以做到。
但是:
如果我想把错误收集处理函数放到一个类里,我该如何进行声明和使用?即:
class MyClass
{
public:
void ErrorProcessor(char* msg){.......................}
void Initialize()
{
AfxRegisterErrorMsgProcessor(ErrorProcessor);//想做到这样注册一个成员函数,显然是Error
}
}
要想达到这样的目的,g_fpErrMsgProcessor和AfxRegisterErrorMsgProcessor,又该如何写?
希望得到高手高手高高手的大力援助,并不胜感激。
如果有做好的,请把关键代码贴出来。
由于有一定的难度,大家帮忙UP一下也可以。
没看懂可以提问