有人可以幫我解決這個錯誤嗎?我是C++新手。而且它似乎錯誤發生在一堆宏中。我能做些什麼來解決它?或者我怎樣才能追蹤到源頭?Casting error in C++
我真的不明白這個錯誤。這是否意味着編譯器試圖將方法void ReadCPUparameter()
轉換爲LRESULT funcName(WPARAM wParam, LPARAM lParam)
函數頭? 。
錯誤:
// error C2440: 'static_cast' : cannot convert from
// 'void (__thiscall CStartup::*)(void)' to
// 'LRESULT (__thiscall CWnd::*)(WPARAM,LPARAM)'.
//
// ON_MESSAGE(WM_UPLOAD_CPU_PARAMETER,ReadCPUparameter) // error here
(我沒有寫這個,我需要重新編譯從Win2000的一個老項目Win7的機器上老VS6.0項目 - > VS2010教授。 。)
代碼:
// class CStartup : public CDialog {};
#include "stdafx.h"
#include "MU.h"
#include "Startup.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CStartup::CStartup(CWnd* pParent /*=NULL*/) : CDialog(CStartup::IDD, pParent)
{
p_p = &cpu_par;
}
void CStartup::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CStartup, CDialog)
ON_WM_SHOWWINDOW()
ON_MESSAGE(WM_UPLOAD_CPU_PARAMETER,ReadCPUparameter) // error here
END_MESSAGE_MAP()
const int nLanguageIds_Language[] =
{
// ...
};
#define MAX_READINGS 200
BOOL CStartup::OnInitDialog()
{
// ...
}
void CStartup::OnOK()
{
CDialog::OnOK();
}
int CStartup::Check_OnRead()
{
// ...
}
void CStartup::ReadCPUparameter()
{
// ...
}
void CStartup::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
PostMessage(WM_UPLOAD_CPU_PARAMETER);
}
我認爲錯誤消息確切說,這是錯誤的。所以爲什麼不將函數簽名修改爲預期的簽名。 –
@vlad_tepesch你能指出我的意思嗎?請閱讀問題的第二段。我不熟悉C++錯誤。 – Bitterblue