回 帖 发 新 帖 刷新版面

主题:出错了不知道怎么改

typedef void (* P)();
class A
{
public:
    void foo()
    {
        run(func);
    }
private:
    void run(P pfn){pfn();}
    void func(){printf("run");}
};


int main( )
{
    A a;
    a.foo();

    
return 0;
}

回复列表 (共2个回复)

沙发

改为:
   static void func()
   {
     printf("run");
   }

   或者将函数体放在外面,而且是全局非该类的成员函数。至于为什么这么改,Trace一下该类的调用

过程吧.

板凳

run(func);

这句有问题, 表面上看  void func() 是没有参数的, 实际上它有一个this指针参数

在网上查一下  __thiscall, _stdcall, __cdecl 会有帮助

我来回复

您尚未登录,请登录后再回复。点此登录或注册