0
我需要一个基类的函数指针。以下是代码:功能基类的指针
class CActionObjectBase
{
...
void AddResultStateErrorMessage(const char* pcMessage , ULONG iResultStateCode);
...
}
CActionObjectCalibration(): CActionObjectBase()
{
...
m_Calibration = new CCalibration(&CActionObjectBase::AddResultStateErrorMessage);
}
class CCalibration
{
...
CCalibration(void (CActionObjectBase::* AddErrorMessage)(const char*, ULONG));
...
void (CActionObjectBase::* m_AddErrorMessage)(const char*, ULONG);
}
函数内部的CCalibration发生错误。我尝试像这样调用函数指针:
if(m_AddErrorMessage)
{
...
m_AddErrorMessage("bla bla", RSC_FILE_ERROR);
}
问题是,我无法编译。错误信息表示如下所示: 错误C2064:表达式不是函数,需要两个参数。
出了什么问题?
问候 camelord
如果他使用'm_AddErrorMessage'不合格,那么这可能是'CCalibration',它不是'CActionObjectBase'。编辑:你已经修复了' - > *'/' - >' – 2010-03-22 10:35:31
@Charles你说得对,我将'this->'改为'something->'。 – 2010-03-22 10:41:09
我真的需要将CActionObjectBase的对象传递给CCalibration吗?我试图通过使用函数指针作为参数来避免这种情况。然后我可以使用一个从CActionObjectBase派生的对象调用CCalibration函数,调用函数,就像我试图在上面显示的那样: m_Calibration = new CCalibration(&CActionObjectBase :: AddResultStateErrorMessage); – camelord 2010-03-22 10:44:50