4.1.3聚合实现.ppt

4.1.3聚合实现.ppt

4.1.3 聚合实现 对象B聚合对象A,那么实现聚合的关键就在于对象B的QueryInteface成员函数。 对象B支持接口Some和Other,但他并不自己实现Some接口,但在QueryInterface成员函数中,它也接收对接口Some的请求,QueryInterface函数如下: HRESULT CB::QueryInterface(conat IID iid,void ** ppv){ if(iid==IID_IUnknown) { ……} else if(iid==IID_Other) {……} else if(iid==IID_Some) return m_pUnknownInner-QueryInterface(iid,ppv); else{……} return S_OK;} 聚合实现 对象A的IUnknown接口指针m_pUnknownInner成员变量是在对象B构造了对象A之后保存的对对象A的引用,QueryInterface通过它便可以获得对象A的接口指针。 要解决聚合的接口调用与COM接口规范的矛盾的关键在于A的IUknown接口,对象A实现了两个 IUnknown接口,一个用于被聚合的情况,另一个用于正常被客户使用的情形。在被

文档评论(0)

1亿VIP精品文档

相关文档