3,248
社区成员




interface INoAggregationUnknown
{
virtual HRESULT __stdcall QueryInterface_NoAggregation(
REFIID riid, void** ppv)=0;
virtual ULONG __stdcall AddRef_NoAggregation()=0;
virtual ULONG __stdcall Release_NoAggregation()=0;
};
HRESULT CAggregator::QueryInterface(REFIID riid, void** ppv)
{
if(riid == IID_IUnknown)
{
cout << "Container: CAggregator::QueryInterface() for IUnknown returning " << this << endl;
*ppv = (IUnknown*)this;
}
else if(riid == IID_ISum)
{
cout << "Container: CAggregator::QueryInterface() for ISum calling inside object" << endl;
return m_pUnknownInner->QueryInterface(riid, ppv);
}
else if(riid == IID_IMultiply)
{
cout << "Container: CAggregator::QueryInterface() for ISum returning " << this << endl;
*ppv = (IMultiply*)this;
}
else
{
*ppv = NULL;
return E_NOINTERFACE;
}
AddRef();
return S_OK;
}