请问ATL如何返回m_pConnection指针??_ConnectionPtr m_pConnection;[, helpstring("方法f")] HRESULT f([out,retval] _ConnectionPtr* Connection);STDMETHOD(f)(_ConnectionPtr* Connection);STDMETHODIMP CAbc::f(_ConnectionPtr* Connection)
{
Connection=m_pConnection; return S_OK;
}

解决方案 »

  1.   

    Connection= &m_pConnection;这样可以吗?但是这样的话,调用的语言是不是支持呢?
    所以感觉最好还是不要用指针吧,Connection=m_pConnection; 这样不是直接返回了 m_pConnection的内容了吗
      

  2.   

    你应该返回IDispatch*或者IUnknown*
    然后对方再查询到相应的接口
      

  3.   

    IDL中只要声明他返回的是ADODB.Connection*,应该是没有问题的
    但是不能使用ConnectionPtr类型,这个是对普通COM类型的一个包装,你不应直接用作COM接口的类型
      

  4.   

    不过看了msadomd.tlh,貌似他使用的是IDispatch*,这样的好处是你不需要考虑怎么导入Connection类型,IDispatch总是合适的最好不要用IUnknown,因为vb不支持这个接口
      

  5.   

    interface IAbc : IUnknown{
    我只有这一个接口
      

  6.   

    [, helpstring("方法f")] HRESULT f([out,retval] IUnknown** Connection);STDMETHOD(f)(IUnknown** Connection);STDMETHODIMP CAbc::f(IUnknown** Connection)
    {
        *Connection=m_pConnection;
        return S_OK;
    }
      

  7.   

    IAbc?和你那个connectionptr没啥关系嘛
    我们说IDispatch是替换你那个ConnectionPtr
      

  8.   

    _ConnectPtr 本身是一个智能指针类,不应该作为接口函数的参数类型,应该使用原始的指针类型,比如_Connect*或者楼上说的IDispatch*