关于成员函数指针调用的问题
CDDDDDlg 包含一个CTestPOINT ,然后需要从CTestPOINT中调用CDDDDDlg的成员函数
问题是:编译不过 error C2059: syntax error : '('
代码如下
在TestPOINT.h中
- C/C++ code
class CDDDDDlg;typedef void(CDDDDDlg::*cb)(char*);class CTestPOINT {public: void Test(); void SetPoint(CDDDDDlg* pdlg, cb p); CDDDDDlg* m_pdlg; cb m_cb;};在TestPOINT.cpp中
- C/C++ code
#include "DDDDDlg.h"void CTestPOINT::SetPoint(CDDDDDlg* pdlg, cb p){ m_pdlg = pdlg; m_cb = p;}#define MYSTR "mystr......"void CTestPOINT::Test(){ m_pdlg->(*m_cb)(MYSTR); //error C2059: syntax error : '('}在DDDDDlg.cpp中
- C/C++ code
void CDDDDDlg::WMSG(char *p){ TRACE("文字是%s\n", p);}BOOL CDDDDDlg::OnInitDialog(){ CDialog::OnInitDialog(); m_test.SetPoint(this, &CDDDDDlg::WMSG);....}在DDDDDlg.h中
- C/C++ code
#include "TestPOINT.h"class CDDDDDlg : public CDialog{// Constructionpublic: CDDDDDlg(CWnd* pParent = NULL); // standard constructor void WMSG(char *p); ......}[解决办法]
(m_pdlg->*m_cb)(MYSTR);