C++在linux下G++编译报错“no matching function for call to ‘*’”
类定在哦orastatement.h声明(内有部分函数定义)段:
class COraBindVariable
{public:
COraBindVariable(void *pSrc,unsigned char *pNullInd)
{m_pBindNext = NULL;
m_pvExtData = pSrc;
m_pNullInd = pNullInd;
CheckNullIndicator();
}
virtual ~COraBindVariable(){}
virtual bool CheckNullIndicator();
virtual sb4 OraDataSize()=0;
virtual ub2 OraDataType()=0;
virtual void *OraData(){return m_pvExtData;}
virtual bool CopyToIntVar(OCIError *pErr){CheckNullIndicator(); return true;}
virtual bool CopyToExtVar(OCIError *pErr){return true;}
dvoid *GetIndicator(){return (dvoid *)&this->m_ind;}
void *m_pvExtData;
unsigned char *m_pNullInd;
COraBindVariable *m_pBindNext;
sb2 m_ind;
};
类在orastatement.cpp中函数定义段:
bool COraBindVariable::CheckNullIndicator()
{m_ind = (m_pNullInd && m_pNullInd[0]) ? -1 : 0;
return m_ind == -1;
}备注:仅此函数在CPP中定义
出错部分代码:
bool CBindVariableList::CopyToExtVarList(OCIError *pErr)
{
return ForEachItem(COraBindVariable::CopyToExtVar(),pErr);
}
return所调用函数ForEachItem的定义:
bool CBindVariableList::ForEachItem(bool (COraBindVariable::*func)(OCIError *),OCIError *pErr){bool b = true;
COraBindVariable *pVar = m_pBindVar;
COraBindVariable *pNext;
while(pVar)
{pNext = pVar->m_pBindNext;
if(! (pVar->*func)(pErr))
b = false;
pVar = pNext;
}
return b;
}
请个位高手前辈帮帮菜鸟小弟,其他信息:该类在.h文件中的子类有2个均为抽象类,另外编译过程为csh脚本,头文件已引入。目前个人觉得问题主要出在:ForEachItem函数的第一个参数的问题上,哪位前辈能够在这个参数上指点小弟也是万分感谢!
[解决办法]
ForEachItem(bool (COraBindVariable::*func)(OCIError *),OCIError *pErr)
-->ForEachItem(COraBindVariable::*func,OCIError *pErr)
就是一个函数指针类型