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