在一个类A内,定义一个指向类B的成员函数指针,但这个类B的定义可能无法获取。
   那么在这种情况下,能否使用这种指针方式来执行类B的成员函数?

解决方案 »

  1.   

    类A和类B有继承关系吗?
    类B没定义(无法获取)怎么执行函数呢
      

  2.   

    是这样的:
        有一个DShow Filter,在这个Filter内有个类A,在检测到某种状况后需要通知上级调用程序(一个对话框程序,对话框类即类B)来处理,对话框程序有个成员函数负责处理这个状况。因此想通过函数指针来调用B的成员函数。    但是在Filter内很难使用MFC类,因此出现这个情况。    谢谢各位回复。
      

  3.   

    一个对话框程序,对话框类即类B
    做成DLL 然后再处理??
      

  4.   

    如果定义的时候不涉及B的具体成员,那么是可以在知道B类的具体定义前,先定义与B相关的东西的,比如B类的指针,或者B类的成员函数的指针。但前提是:至少要先有一句:
    class B;
    向编译器表明B是个类名。
    例如:class B;
    class A
    {
       B* m_pB;
       void (B::*m_pBFunc)();   A() { m_pB = NULL; m_pBFunc = NULL; }
       void SomeFunc() { if(m_pB != NULL && m_pBFunc != NULL) (m_pB->*m_pBFunc)(); }
    };
      

  5.   


       不太明白你的意思?
       
       我的对话框程序是可执行程序,调用DShowFilter 编译成的dll,但是希望在dll内调用对话框程序的成员函数,这能否做到?   我刚才想到,如果把对话框的成员函数修改成全局函数,似乎是可以的,但是这样的话也不方便,因为在这个函数内要访问大量的对话框的数据成员。   我想确认一下,这个全局函数指针可以吗?   多谢回复。
      

  6.   

    通过发送消息,调用dll时传个句柄给dll,当dll用调用函数的地方发个消息个对话框,对话框在消息处理函数中调用相应的函数