Class CTestFrmA : public CDialog
{
Public:
    int (*TestABC)(CString strData);
    ...
    ...
}Class CTestFrmB : public CDialog
{
Public:
    int TestBCD(CString strData);
    ...
    ...
}错误的地方是:
m_FrmTestA.TestABC = TestBCD; error C2440: '=' : cannot convert from 'int (__thiscall CTestDlg::*)(class CString)' to 'int (__cdecl *)(class CString)'我在一个Dialog(CTestFrmB)的初始化函数中创建了另一个窗体(CTestFrmA),并想设置另一个窗体(m_FrmTestA)里面的一个回调函数.

解决方案 »

  1.   

    Class CTestFrmB : public CDialog
    {
    Public:
    int TestBCD(CString strData);
    ...
    ...
    }
    该类中的TestBCD是CTestFrmB的成员函数,签名和int (*TestABC)(CString strData);显然不一样
    int CTestFrmB::TestBCD( CTestFrmB *this, CString strData ); __thiscall
    int (*TestABC)(CString strData); __cdecl call
      

  2.   

    to lurenfu:
    谢谢,您的解释,您告诉我了原因,但是这个问题解决方法是什么呢?
    我怎么才能用"回调函数".怎样才能让TestA去使用TestB的函数.
      

  3.   

    回调函数不能是成品函数,但是可以是静态成员函数,改成:static int TestBCD(CString strData);