COM中的QueryInerface函数中为何要使用一个指向指针的指针?
HRESULT _stdcall CA::QueryInterface(const IID& id,void** ppv)
{
if(id == IID_IUnknown)
{
trace("QueryInterface:Return pointer to IUnknown.");
*ppv = static_cast<IX*>(this);
}
else if(id == IID_IX)
{
trace("QueryInterface:Return pointer to IX.");
*ppv = static_cast<IX*>(this);
}
else
{
trace("QueryInterface:Interface not supported.");
*ppv = NULL;
return E_NOINTERFACE;
}
reinterpret_cast<IUnknown*>(*ppv)->AddRef();
return S_OK;
}
ppv 定义成指针不行吗,为何要用一个指向指针的指针?? 再就是reinterpret_cast与
static_cast有何区别??