函数指针来自基类

时间:2010-03-22 10:27:11

标签: c++

我需要一个基类的函数指针。这是代码:

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

2 个答案:

答案 0 :(得分:2)

您需要提供一个可以调用成员函数的对象:

CActionObjectBase* pActionObjectBase /* = get pointer from somewhere */ ;

(pActionObjectBase->*m_AddErrorMessage)("bla bla", RSC_FILE_ERROR);

与普通的对象和函数指针不同,指向成员的指针只能通过.*(对象和引用)或->*(指向对象的指针)运算符使用适当类型的对象进行引用

答案 1 :(得分:0)

您需要在对象上调用m_AddErrorMessage,例如:

(something->*m_AddErrorMessage)(...)