我有一个 c++ 程序,我正在尝试从 VS98 移植到 VS2003(增量步骤)。贯穿始终的一个错误是“错误 2275”
例如: k:\RR\chart\chartdlg.cpp(2025): error C2475: 'CRrDoc::cFldFilter' : 形成指向成员的指针需要显式使用地址运算符 ('&') 和限定名
有问题的代码如下所示:
void CDataPage::OnBtnLabelField()
{
FLDID fid ;
LPMFFIELD f ;
CRrApp *pApp = (CRrApp *)AfxGetApp();
CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
CRrDoc *pDoc = (CRrDoc *)pFrame->GetActiveDocument();
CSelectFieldDlg dlg;
//**************************************************
//BOOL CRrDoc::*zcFldFilter = &CRrDoc::cFldFilter;
//dlg.ck = CRrDoc->*zcFldFilter;
//**************************************************
dlg.ck = pDoc->cFldFilter ;
dlg.TitleTextID = IDS_2676;
fid = (FLDID)dlg.DoModal();
if (fid != NOID)
{
f = pDoc->m_pComposite->mfbyndx(fid);
// find index
int i, iCount;
iCount = m_lboxLabel.GetCount();
for (i = 0; i < iCount; i++)
{
if(fid == m_lboxLabel.GetItemData(i))
{
m_lboxLabel.SetCurSel(i);
OnSelchangeComboLabel();
}
}
}
}
我尝试根据 Microsoft页面处理它:但这只是产生了一组其他问题(星号之间的注释代码)。请注意,我还注释掉了以下行:
dlg.ck = pDoc->cFldFilter
不幸的是,这会导致一个新错误:k:\RR\chart\chartdlg.cpp(2022): error C2440: 'initializing' : cannot convert from 'BOOL (__cdecl )(LPMFFIELD)' to 'BOOL CRrDoc:: '
.H 文件中的定义如下所示:
public:
static BOOL cFldFilter(LPMFFIELD f);
任何想法如何处理指向成员的问题?