COM-如何创建返回接口指针的方法?

COM-如何创建返回接口指针的方法?,com,interface,methods,Com,Interface,Methods,如何在COM中创建返回接口指针的方法,这需要在IDL文件中完成 编辑: 如何在类中实现这一点: STDMETHODIMP CBlah::get_Something(IOtherBlah** retval){ return m_protectedvar->QueryInterface(retval); } STDMETHODIMP CBlah::put_Somthing(IOtherBlah* rhs){ m_protectedvar = rhs; return S_OK; } 上述方法不

如何在COM中创建返回接口指针的方法,这需要在IDL文件中完成

编辑:

如何在类中实现这一点:

STDMETHODIMP CBlah::get_Something(IOtherBlah** retval){
return m_protectedvar->QueryInterface(retval);
}
STDMETHODIMP CBlah::put_Somthing(IOtherBlah* rhs){
m_protectedvar = rhs;
return S_OK;
}
上述方法不起作用。我得到以下错误:

cannot instantiate abstract class with[ Base=Blah ] due to following members:
'HRESULT IBlah::putref_Something(IOtherBlah*)' : is abstract
大概是这样的:

 interface IYourInterface {
     HRESULT GetPointer( [out, retval]IInterface** );
 };
 IInterface* pointer = 0;
 HRESULT hr = yourInterfacePointer->GetPointer( &pointer );
调用者会这样称呼它:

 interface IYourInterface {
     HRESULT GetPointer( [out, retval]IInterface** );
 };
 IInterface* pointer = 0;
 HRESULT hr = yourInterfacePointer->GetPointer( &pointer );

如果要执行get/set方法,一个用于设置对象,另一个用于获取指向对象/接口的指针,请在另一个答案中使用用户nobugz的代码段。@Phill-为什么取消标记答案?你还需要什么?你必须写putref\u Something(),而不是put\u Something()。