我要调用的成员函数不能是static,怎么办?

解决方案 »

  1.   

    将该类的This指针保存到类的一个static成员变量中,static的函数通过该指针访问.
      

  2.   

    静态函数中没有this指针,访问非静态成员当然会导致错误。
    回调改为全局的函数就是了,把当前对象的指针传入,就能任意调用了。
      

  3.   

    也可以在你调用的数据成员加上该类的指针
    比如公有数据成员m_a在CMainFrame类中
    在timerProc中AfxGetMainWnd()->m_a;
    依次类推
      

  4.   

    冰茶试过这样做?在静态成员中使用this指针可能会导致错误的。另,毕竟应该把static的功能明确。静态成员并不是被某一个对象所独有,甚至不需要创建对象,也能访问和使用静态成员。所以在静态成员中访问非静态成员,或者把非静态成员赋值为静态成员,都是危险的操作。
      

  5.   

    用全局变量好像不行啊?
    可是在类的成员函数好像不能声明extern啊??
      

  6.   

    冰茶试过这样做?在静态成员中使用this指针可能会导致错误的。另,毕竟应该把static的功能明确。静态成员并不是被某一个对象所独有,甚至不需要创建对象,也能访问和使用静态成员。所以在静态成员中访问非静态成员,或者把静态成员赋值为非静态成员,都是危险的操作。
      

  7.   

    在类里面声明extern的Callback函数根本没办法通过。
    是不是要在外面声明一个全局函数?
    然后传指针给它?
      

  8.   

    用全局变量好像不行啊?
    可是在类的成员函数好像不能声明extern啊??_____________不是全局变量,而是全局的回调函数
      

  9.   

    是我说错,就是定义全局的回调函数不行啊。我现在调通了,就是刚才说的,在外面声明一个全局函数,一个类的指针pEx。
    1、传this指针给变量pEx
    2、SetTimer
    3、在TimerProc里面调用pEx来访问类的成员函数。
    不过这种是曲线救国方法了。看大家还有没有什么主意。。
      

  10.   

    你的TimerProc在哪个类里面?
    只要在TimerProc里得到该类的指针就可以了
    就这么简单!
      

  11.   

    现在TimerProc不在类里面了,
    做在外面的函数了。