描述:
在使用aggregation的时候:
struct IDelegatingUnknown
{
virtual HRESULT _stdcall NonDelegatingQueryInterface(...);
...
};
// Component 作为内部组件
class Component : public IDelegatingUnknown
{
....
CA( IUnknown* pUnkOuter ) : m_cRef( 1 )
{
if ( pUnkOuter == NULL )
{
// Let pUnkOuter point to NonDelegatingUnknown
m_pUnkOuter = reinterpret_cast<IUnknown*>( static_cast<INonDelegatingUnknown*>( this ) );
}
else
{
// Delegate to Outter DelegatingUnknown
m_pUnkOuter = pUnkOuter;
}
}
};
请问:reinterpret_cast<IUnknown*>( static_cast<INonDelegationUnknown*>( this ) ); 它应该使得m_pUnkOuter指向非代理的的接口部分吧,日后,能调用m_pUnkOuter->QueryInterface(...)么? 可是非代理部分应该只有NonDelegatingQueryInterface的呀? 我在看<inside com>第八章。望解答,谢谢!
另外,能讲讲关于reinterpret_cast,和static_cast么?
渴望ing....