求助C++中函数指针数组的问题
今天写一个程序,想根据读取到的不同图片文件的扩展名来调用不同的成员函数。
但是函数指针数组声明以后,在调用时显示错误“明显调用的表达式前的括号必须具有(指针)函数类型”。
以下是部分程序,望大神帮我解答。
/////////////////////出错的程序部分///////////////////////////////
//扩展名查找比对表
CString extList[2*TYPENUM]={_T(".bmp"),_T(".BMP")};
//对应函数列表
bool (ImageFile::* funcList[TYPENUM])(void)={ReadBMP};
for(int i=0;i<2*TYPENUM;++i)
if(extName==extList[i])
return (funcList[i/2])(); //此行出错
///////////////////////////////////////////////////////////////////////
/////////////////其中//////////////////////
//类名为ImageFile
#define TYPENUM 1
//类中ReadBMP的函数声明:
bool ReadBMP(void);
//////////////////另外补充//////////////
出错的那一行写成上面那样其实不太符合C++标准,但是如果写成这样:
return (* funcList[i/2])();
或者这样:
return (* (funcList[i/2]))();
也是会报错的,错误变成“"*"的操作数必须是指针”。