这段代码本来应做成函数的,但编译器这样报错
C:\Program Files\Microsoft Visual Studio\MyProjects\EX_Calculator02\EX_Calculator02Dlg.cpp(434) : error C2597: illegal reference to data member 'CEX_Calculator02Dlg::m_Edit' in a static member function
C:\Program Files\Microsoft Visual Studio\MyProjects\EX_Calculator02\EX_Calculator02Dlg.cpp(435) : error C2065: 'UpdateData' : undeclared identifier
无奈求助,高人答曰:宏定义
但这样感觉挺不规范的,怎么办
宏定义如下:
#define INPUTNUMBER(num)\
if (decimal)\
{\
input_dec+=(num/count);\
count*=10;\
}\
else input_int= input_int*10+num;\
value=input_int+input_dec;\
gcvt(value,10,buffer);\
CEX_Calculator02Dlg::m_Edit=(LPCTSTR)buffer;\
UpdateData(false);

解决方案 »

  1.   

    静态函数参数中可以传入类指针
    static void fun(void *pParam, xxxxx)
    {
      CEX_Calculator02Dlg *pThis = (CEX_Calculator02Dlg *)pParam;
      pThis->m_Edit = ;
      pThis->UpdateData(false);
    }在调用时 fun(this, xxxxxx) //传入类指针
      

  2.   

    静态成员函数是不能直接调用普通成员函数的,因为没有this指针。
      

  3.   

    因为你的宏放在类的外面,无法传递this 指针
      

  4.   

    传一个editbox的指针就可以了,干吗总用updatedata