读书人

关于成员函数指针调用的有关问题

发布时间: 2012-06-01 16:46:36 作者: rapoo

关于成员函数指针调用的问题
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);

读书人网 >C++

热点推荐