怎么在一个类里面,
建立一个函数指针
指向其他的某个类里面的某个函数
两个不同的类

解决方案 »

  1.   

    首先,你得定义一个指针类型,即函数指针
    #typedef  void (*Func)();然后,在类A中声明和定义
    class A{
    ...
    void FuncA();
    ...
    }
    void A::FuncA()
    {
    ;
    }
    再后,定义类B
    class B
    {
    ...
    Func  fun;
    ...
    }
    你在A中把函数FuncA作为一个指针传递给类B中的fun,就可以在B中使用fun指针完全一样的调用A中的函数FuncA了。
      

  2.   

    嗯,我原来也是这么处理的。可是
    他说1>f:\projects\ppshibao\ppshibao\ppshibaodlg.cpp(92) : error C3867: “CppshibaoDlg::QuitPaoPaoShiBao”: 函数调用缺少参数列表;请使用“&CppshibaoDlg::QuitPaoPaoShiBao”创建指向成员的指针
    1>f:\projects\ppshibao\ppshibao\ppshibaodlg.cpp(92) : error C2440: “=”: 无法从“void (__thiscall CppshibaoDlg::* )(void)”转换为“PointFunc”
      

  3.   

    // First declareclass abc;typedef void (abc::*LPFUNC)(int i);class abc
    {
    public:
      void test(int i);
      
      LPFUNC lpFunc;
    };
      

  4.   

    最简单的办法是在类中传递void*指针,然后,force cast it.
    我想LZ的问题可能用friend类的方式解决更好.
      

  5.   

    指向成员函数的指针.
    示例程序:// VC.NET 2003 Ver7.1.3091
    #include "stdafx.h"class A
    {
    public:
     int Get100() {return 100;}
    };class B
    {
    public:
     int (A::*pFun)(void);
     void Print(A* pA)
     {
      int val = (pA->*pFun)(); 
      printf("Val = %d\n",val);
     };
    };int _tmain(int argc, _TCHAR* argv[])
    {
     A a;
     B b;
     b.pFun = A::Get100;
     b.Print(&a);
     return 0;
    }// 输出: Val = 100