VS98 から VS2003 に移植しようとしている C++ プログラムがあります (増分ステップ)。全体で発生するエラーの 1 つは、「エラー 2275」です。
例: k:\RR\chart\chartdlg.cpp(2025): エラー 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();
}
}
}
}
私はマイクロソフトのページに従ってそれを処理しようとしました:しかし、それは他の一連の問題を生成しました(アスタリスク間のコメントされたコード)。次の行もコメントアウトしたことに注意してください。
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);
メンバーへのポインターの問題を処理する方法はありますか?