一个函数指针的错误
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)();
即可,我编译已经通过