
C++在linux下G++编译报错“no matching function for call to ‘*’”
类定在哦orastatement.h声明(内有部分函数定义)段:classCOraBindVariable{public:COraBindVariable(void*pS...
类定在哦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函数的第一个参数的问题上,哪位前辈能够在这个参数上指点小弟也是万分感谢!
展开
2个回答
展开全部
代码号乱,好像不完整,初步分析如下:
bool CBindVariableList::CopyToExtVarList(OCIError *pErr)
{
return ForEachItem(COraBindVariable::CopyToExtVar(),pErr);
//这里,CopyToExtVar函数的返回值,是一个bool类型,作为第一个参数传递进入ForEachItem函数
}
但是,
bool CBindVariableList::ForEachItem(bool (COraBindVariable::*func)(OCIError *),OCIError *pErr)
函数申明,第一个参数,需要的是一个函数指针,所以出问题了。
希望对你有帮助!
bool CBindVariableList::CopyToExtVarList(OCIError *pErr)
{
return ForEachItem(COraBindVariable::CopyToExtVar(),pErr);
//这里,CopyToExtVar函数的返回值,是一个bool类型,作为第一个参数传递进入ForEachItem函数
}
但是,
bool CBindVariableList::ForEachItem(bool (COraBindVariable::*func)(OCIError *),OCIError *pErr)
函数申明,第一个参数,需要的是一个函数指针,所以出问题了。
希望对你有帮助!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询