Welcome

首页 / 软件开发 / C++ / ATL开发技巧之一(集合对象的实现)

ATL开发技巧之一(集合对象的实现)2010-12-30 未知 贾闻强通常对象集合时要用到枚举器,但枚举器的实现主要是为了集合对象的访问控制,我们可以用CComEnumOnSTL模板去定义自己的枚举器,这样会涉及复杂的复制策略定义及集合方法实现的定义。

假如我们不使用枚举器,而仅使用接口数组,集合对象会有一个相对简单许多的实现,本文将探讨这种方法的实现并提供完整的源代码。

下面针对例子介绍用接口数组实现的集合对象,供大家参考:

集合对象创建类:CvoxSys接口:IVoxSys
集合对象类:CvoxChs接口:IVoxChs
子对象类:CvoxCh接口:IVoxCh

一、关于CVoxCh子对象:

在CvoxCh中添加私有成员变量:

private:
BSTR m_bstrMessage;

在CvoxCh的构造函数中初始化成员变量的值:

CVoxCh()
{
m_bstrMessage = A2BSTR("No inited!");
}

为接口IvoxCh添加BSTR类型属性:Message

修改get_Message函数:

STDMETHODIMP CVoxCh::get_Message(BSTR *pVal)
{
*pVal = m_bstrMessage;
return S_OK;
}

二、关于CVoxChs集合对象:

在CvoxChs中添加两个私有成员变量:

private:
CComPtr<IVoxCh> m_arrpCh[160]; //子对象接口数组
long m_nChs; //实例子对象计数

在CvoxChs的构造函数中初始化成员变量的值:

CVoxChs()
{
m_nChs = 0;
}