ATL開發技巧之一(集合物件的實現)

2021-04-25 21:58:32 字數 1780 閱讀 7828

集合物件建立類:cvoxsys

介面:ivoxsys

集合物件類:cvoxchs

介面:ivoxchs

子物件類:cvoxch

介面:ivoxch

一、關於cvoxch子物件:

在cvoxch中新增私有成員變數:

private:bstr m_bstrmessage;
在cvoxch的建構函式中初始化成員變數的值:
cvoxch()

為介面ivoxch新增bstr型別屬性:message

修改get_message函式:

stdmethodimp cvoxch::get_message(bstr *pval)

二、關於cvoxchs集合物件:

在cvoxchs中新增兩個私有成員變數:

private:ccomptr m_arrpch[160];//子物件介面陣列long m_nchs;//實例子物件計數
在cvoxchs的建構函式中初始化成員變數的值:
cvoxchs()

為介面ivoxchs新增屬性及方法:
//為集合物件新增子物件[id(1), helpstring("method addch")] hresult addch([out,retval]long* pval);

//獲得子物件計數[propget, id(2), helpstring("property count")] hresult count([out, retval] long *pval);//獲得子物件介面集[propget, id(3), helpstring("property ch")] hresult ch([in]long index, [out, retval]ivoxch** pval);

修改addch函式:
stdmethodimp cvoxchs::addch(long* pval)

修改get_count函式:
stdmethodimp cvoxchs::get_count(long *pval)

修改get_ch函式:
stdmethodimp cvoxchs::get_ch(long index,ivoxch** pval)

三、關於cvoxsys集合物件建立類:

在cvoxsys中新增私有成員變數:

private:ccomptr m_spvoxchs;
在cvoxsys中新增實現:
//使用finalconstruct的原因在於它可以有標準返回值。hresult cvoxsys::finalconstruct()		

在cvoxsys中新增屬性:
//獲得集合物件介面:[propget, id(1), helpstring("property voxchs")] hresult voxchs([out, retval] ivoxchs** pval);
修改get_voxchs函式:
stdmethodimp cvoxsys::get_voxchs(ivoxchs **pval)

4、示例說明:

以上元件編譯註冊後,在使用時應避免超計數範圍的子物件使用。

使用前請先為集合物件新增子物件例項,再呼叫之,這也符合一般程式設計方法。

Python基礎之 一 集合 set

集合 是乙個無序的,不重複的資料組合。主要作用 去重 把列表變成集合就自動去重 關係測試 測試倆組資料的交集,差集,並集等關係 關係測試共有7種,如下 名稱 方法名 簡寫符號 解釋 交集 s.intersection t s t 返回乙個新的 set 包含 s 和 t 中的公共元素 並集 s.uni...

深入學習集合類之一 集合類學習總覽

通常,在我們關注集合類的時候,我們關注的是它們的以下幾點 除此之外,各個類還有一些需要各自注意的點,如list介面的迭代器和其子類等。首先,最關鍵的是集合類的類結構,可以從總體上把握集合類的設計思路和使用場景。如圖所示,是主要集合類的類結構,其中,紅色字型代表是介面,黑色字型代表是類 集合類還有一些...

細數Python的特殊方法一 集合類

len 返回物件的長度 getitem 獲得某一項的值 setitem 設定莫一項的值 delitem 刪除某一項 contains 包含某一項 實現說明 1 模擬一副撲克牌,包含兩個類,乙個是卡片類 card 乙個是 撲克 puke puke類包含52張牌,13個大小 ajqk,2 10 4張花色...