i need a Function Pointer from a base class. Here is the code:
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 );
}
Inside CCalibration in a Function occurs the Error. I try to call the Function Pointer like this:
if(m_AddErrorMessage)
{
...
m_AddErrorMessage("bla bla", RSC_FILE_ERROR);
}
The Problem is, that I cannot compile. The Error Message says something like: error C2064: Expression is no Function, that takes two Arguments.
What is wrong?
regards camelord
You need to provide an object on which you call the member function:
CActionObjectBase* pActionObjectBase /* = get pointer from somewhere */ ;
(pActionObjectBase->*m_AddErrorMessage)("bla bla", RSC_FILE_ERROR);
Unlike normal object and function pointers, pointers to members can only be deferenced using an object of the appropriate type via the .*
(for objects and references) or ->*
(for pointers to objects) operators.
您需要在一个对象上调用m_AddErrorMessage
,例如:
(something->*m_AddErrorMessage)(...)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.