QueryInterface函数的实现如下:HRESULT COMB::QueryInterface(const IID& iid, void **ppv)
{
if ( iid == IID_IUnknown )
{
*ppv = (IUnknown *) this ; //此处已经把*ppv做(IUnknown *)强制转换
((IUnknown *)(*ppv))->AddRef() ;//为什么还要再把*ppv强制转换一次
} else if ( iid == IID_OtherInterface )
{
*ppv = (IOtherInterface *) this ;
((IOtherInterface *)(*ppv))->AddRef() ;
} else if ( iid == IID_SomeInterface )
{
return m_pUnknownInner->QueryInterface(iid, ppv) ;
} else
{
*ppv = NULL;
return E_NOINTERFACE ;
}
return S_OK;
}
{
if ( iid == IID_IUnknown )
{
*ppv = (IUnknown *) this ; //此处已经把*ppv做(IUnknown *)强制转换
((IUnknown *)(*ppv))->AddRef() ;//为什么还要再把*ppv强制转换一次
} else if ( iid == IID_OtherInterface )
{
*ppv = (IOtherInterface *) this ;
((IOtherInterface *)(*ppv))->AddRef() ;
} else if ( iid == IID_SomeInterface )
{
return m_pUnknownInner->QueryInterface(iid, ppv) ;
} else
{
*ppv = NULL;
return E_NOINTERFACE ;
}
return S_OK;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货