因为多个对象可能实现同一接口,所以强制转换肯定是有问题的。

解决方案 »

  1.   

    你用QueryInterface()应该可以的,接口之间是可以互相访问的。
      

  2.   

    我的意思是:假如我的CA类实现了IA接口,在内部有个CB类有一个IA *类型的
    数据成员,那么在CB类的某些方法中,为了访问CA类的成员函数(这些函数不
    是IA的接口函数),我如何通过IA *得到CA *以访问CA类的公有函数呢?
      

  3.   

    强制转换应该可以的,但是这样就违反了COM的原则。
      

  4.   

    没有做过,但你可以试试:
    在COM的MFC实现中,接口的函数访问该接口实现类指针的方法是通过计算类中偏移量获取的,那么是否可以专门在接口中定义一个函数来获取这个指针呢?
      

  5.   

    我没有想到这居然成为了一个问题,难道ATL中没有相关的辅助类来支持?
    想想看,在一套复杂的对象模型库中,这种情况是非常普遍的啊。
      

  6.   

    去看一下这个宏,或许有帮助
    COM_INTERFACE_ENTRY_FUNC( iid, dw, func )
      

  7.   

    你应该实现IServiceProvider::QueryService来实现其他对象的访问