首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个函数指针的异常

2012-02-20 
一个函数指针的错误JEOL_ERRORCAD_Dispatcher::sendDetectCPU_Data(DETECT_CPU_DATAdetectCPU_Data){memcp

一个函数指针的错误
JEOL_ERROR   CAD_Dispatcher::sendDetectCPU_Data(DETECT_CPU_DATA   detectCPU_Data)
{
memcpy(reinterpret_cast <BYTE*> (&m_detectCPU_Data),  
reinterpret_cast <BYTE*> (&detectCPU_Data),   sizeof(DETECT_CPU_DATA));//
DetectCPU_CommandID   detectCPU_CommandID   =   detectCPU_Data.m_eCommandID;

struct   FuncTable{
DetectCPU_CommandIDdetCPU_CommandID;
JEOL_ERROR   (CAD_Dispatcher::*Func)();
};

const   FuncTableastFuncTable[]   =   {
{   DETECT_COMMAND_ID_DATA_AUTO,onMeasurementData},
{   DETECT_COMMAND_ID_DATA_CHRONOLOGICAL,   onChronologicalData},
{   DETECT_COMMAND_ID_DATA_SEQUENTIAL,   onSequentialData},
{   DETECT_COMMAND_ID_DATA_REFERENCE_AD_AVERAGE,   onReference_AD_AverageData},
{   DETECT_COMMAND_ID_DATA_CHECK_AD_AVERAGE,   onCheck_AD_AverageData},
{   DETECT_COMMAND_ID_DATA_CHECK_AD,   onCheck_AD_Data},
{   DETECT_COMMAND_ID_DATA_DIGITAL_POTENTIO,   onDigitalPotentioData}
};
for(int   i   =   0;   i   <   sizeof(astFuncTable)/sizeof(FuncTable);   i++)
{
if   ((detectCPU_CommandID   ==   astFuncTable[i].detCPU_CommandID)   &&
  (0   !=   astFuncTable[i].Func))
{
return   (astFuncTable[i].Func)();//ERROR
}
}
FIRM_ASSERT(0);
}

就是一个回调.
到这步时错了, "return   (astFuncTable[i].Func)();//ERROR "
我家里没有2003.net不能把那个错误信息贴出来.


请大家帮忙看看什么问题

[解决办法]
想通过指向成员函数的指针来调用成员函数,

那必须要通过对象或指向对象的指针来调用.

所以你上面4楼的程序可以改一下:

return (astFuncTable[i].Func)();
改为:
return (this-> *astFuncTable[i].Func)();

即可,我编译已经通过

热点排行