谁能解决这个问题,我就崇拜他!!
我想把下边的代码写到类里去,由于涉及到函数数组,所以总是不成功!该怎么办?
我用的是VC++;
//以下代码在头文件中
typedef int (hdlc_func)(PVOID pParam);
int hdlcfree(PVOID pParam); //HDLCS_FREE 0
int hdlcdmasr(PVOID pParam); //HDLCS_DMASR 1
int hdlcsarmodr(PVOID pParam); //HDLCS_SARMODR 2
int hdlcsnrmodr(PVOID pParam); //HDLCS_SNRMODR 3
int hdlcsarmest(PVOID pParam); //HDLCS_SARMEST 4
int hdlcsnrmest(PVOID pParam); //HDLCS_SNRMEST 5
int hdlcdisc(PVOID pParam); //HDLCS_DISC 6
//以下代码在CPP文件中
hdlc_func * hdlcswitch[] = {
(hdlc_func *)hdlcfree, //HDLCS_FREE 0
(hdlc_func *)hdlcdmasr, //HDLCS_DMASR 1
(hdlc_func *)hdlcsarmodr, //HDLCS_SARMODR 2
(hdlc_func *)hdlcsnrmodr, //HDLCS_SNRMODR 3
(hdlc_func *)hdlcsarmest, //HDLCS_SARMEST 4
(hdlc_func *)hdlcsnrmest, //HDLCS_SNRMEST 5
(hdlc_func *)hdlcdisc, //HDLCS_DISC 6
};
int hdlcfree(PVOID pParam){return 0;} //HDLCS_FREE 0
int hdlcdmasr(PVOID pParam){return 0;} //HDLCS_DMASR 1
int hdlcsarmodr(PVOID pParam){return 0;} //HDLCS_SARMODR 2
int hdlcsnrmodr(PVOID pParam){return 0;} //HDLCS_SNRMODR 3
int hdlcsarmest(PVOID pParam){return 0;} //HDLCS_SARMEST 4
int hdlcsnrmest(PVOID pParam){return 0;} //HDLCS_SNRMEST 5
int hdlcdisc(PVOID pParam){return 0;} //HDLCS_DISC 6
//end. 我想把上边的代码封装到类里面去,可是总是不成功,我封装的代码(简化)如下:
//以下代码在头文件中
#define HDLCSTATES 7 //状态函数数目
class CHdlcb
{
public:
CHdlcb();
virtual ~CHdlcb(){};
public:
int (* hdlcswitch[HDLCSTATES])(PVOID pParam);
int hdlcfree(PVOID pParam); //HDLCS_FREE 0
int hdlcdmasr(PVOID pParam); //HDLCS_DMASR 1
int hdlcsarmodr(PVOID pParam); //HDLCS_SARMODR 2
int hdlcsnrmodr(PVOID pParam); //HDLCS_SNRMODR 3
int hdlcsarmest(PVOID pParam); //HDLCS_SARMEST 4
int hdlcsnrmest(PVOID pParam); //HDLCS_SNRMEST 5
int hdlcdisc(PVOID pParam); //HDLCS_DISC 6
};
//以下代码在CPP文件中
CHdlcb::CHdlcb()
{
int (* hdlcswitch[HDLCSTATES])(PVOID pParam) =
{
hdlcfree, //HDLCS_FREE 0
hdlcdmasr, //HDLCS_DMASR 1
hdlcsarmodr, //HDLCS_SARMODR 2
hdlcsnrmodr, //HDLCS_SNRMODR 3
hdlcsarmest, //HDLCS_SARMEST 4
hdlcsnrmest, //HDLCS_SNRMEST 5
hdlcdisc, //HDLCS_DISC 6
};
}
int CHdlcb::hdlcfree(PVOID pParam){return 0;} //HDLCS_FREE 0
int CHdlcb::hdlcdmasr(PVOID pParam){return 0;} //HDLCS_DMASR 1
int CHdlcb::hdlcsarmodr(PVOID pParam){return 0;} //HDLCS_SARMODR 2
int CHdlcb::hdlcsnrmodr(PVOID pParam){return 0;} //HDLCS_SNRMODR 3
int CHdlcb::hdlcsarmest(PVOID pParam){return 0;} //HDLCS_SARMEST 4
int CHdlcb::hdlcsnrmest(PVOID pParam){return 0;} //HDLCS_SNRMEST 5
int CHdlcb::hdlcdisc(PVOID pParam){return 0;} //HDLCS_DISC 6
//咳!编译总是出错,不知道该怎么改??