IEnumOnSTLImpl 類別
這個類別會根據標準連結庫集合C++定義列舉值介面。
語法
template <class Base,
const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base
參數
Base
COM 列舉值。 如需範例,請參閱 IEnumString 。
piid
列舉值介面之介面標識碼的指標。
T
列舉值介面所公開的項目類型。
複製
複製 原則類別。
CollType
標準連結庫容器類別C++。
成員
公用方法
名稱 | 描述 |
---|---|
IEnumOnSTLImpl::Clone | Clone 的實作。 |
IEnumOnSTLImpl::Init | 初始化列舉程式。 |
IEnumOnSTLImpl::Next | Next 的實作。 |
IEnumOnSTLImpl::Reset | Reset 的實作。 |
IEnumOnSTLImpl::Skip | Skip 的實作。 |
公用資料成員
名稱 | 描述 |
---|---|
IEnumOnSTLImpl::m_iter | 反覆運算器,表示列舉值在集合中的目前位置。 |
IEnumOnSTLImpl::m_pcollection | 要列舉之專案的C++標準連結庫容器指標。 |
IEnumOnSTLImpl::m_spUnk | 提供 IUnknown 集合之 物件的指標。 |
備註
IEnumOnSTLImpl
提供 COM 列舉值介面的實作,其中列舉的專案會儲存在與標準連結庫相容的容器C++。 這個類別類似於 CComEnumImpl 類別,該類別會根據陣列提供列舉值介面的實作。
注意
如需 與 IEnumOnSTLImpl
之間CComEnumImpl
進一步差異的詳細資訊,請參閱 CComEnumImpl::Init。
一般而言,您 不需要 從這個介面實作衍生來建立自己的列舉值類別。 如果您想要根據C++標準連結庫容器使用ATL提供的列舉值,建立 CComEnumOnSTL 的實例比較常見,或建立集合類別,以從ICollectionOnSTLImpl 衍生來傳回列舉值。
不過,如果您需要提供自定義列舉值(例如,除了列舉值介面之外公開介面的列舉值,也可以衍生自這個類別。 在此情況下,您可能需要覆寫 Clone 方法以提供您自己的實作。
繼承階層架構
Base
IEnumOnSTLImpl
需求
標頭: atlcom.h
IEnumOnSTLImpl::Init
初始化列舉程式。
HRESULT Init(
IUnknown* pUnkForRelease,
CollType& collection);
參數
pUnkForRelease
[in] IUnknown
在列舉值存留期間必須保持運作的物件指標。 如果不存在這類物件,則傳遞NULL。
collection
保存要列舉之專案的C++標準連結庫容器參考。
傳回值
標準 HRESULT 值。
備註
如果您將參考傳遞 Init
至另一個物件中保留的集合,您可以使用 pUnkForRelease 參數來確保物件及其保存的集合,只要列舉值需要它即可使用。
您必須先呼叫這個方法,才能將指標傳遞回任何用戶端的列舉值介面。
IEnumOnSTLImpl::Clone
這個方法提供 Clone 方法的實作,方法是建立 類型的 CComEnumOnSTL
物件、使用目前 物件所使用的相同集合和反覆運算器初始化它,並在新建立的物件上傳回 介面。
STDMETHOD(Clone)(Base** ppEnum);
參數
ppEnum
[out]從目前列舉值複製之新建立物件的枚舉器介面。
傳回值
標準 HRESULT 值。
IEnumOnSTLImpl::m_spUnk
提供 IUnknown
集合之 物件的指標。
CComPtr<IUnknown> m_spUnk;
備註
這個智慧型指標會在傳遞至 IEnumOnSTLImpl::Init 的物件上維護參考,確保它在列舉值存留期間保持運作。
IEnumOnSTLImpl::m_pcollection
這個成員指向提供數據驅動列舉值介面實作的集合。
CollType* m_pcollection;
備註
這個成員是由呼叫 IEnumOnSTLImpl::Init 初始化。
IEnumOnSTLImpl::m_iter
這個成員會保存反覆運算器,用來標記集合中的目前位置,並巡覽至後續元素。
CollType::iterator m_iter;
IEnumOnSTLImpl::Next
這個方法提供 Next 方法的實作。
STDMETHOD(Next)(
ULONG celt,
T* rgelt,
ULONG* pceltFetched);
參數
塞爾特人
[in]要求的元素數目。
rgelt
[out]要填入元素的陣列。
pceltFetched
[out]實際在 rgelt 中傳回的元素數目。 如果清單中的 celt 元素少於 celt 元素,這個值可能會小於 celt。
傳回值
標準 HRESULT 值。
IEnumOnSTLImpl::Reset
此方法提供 Reset 方法的實作。
STDMETHOD(Reset)(void);
傳回值
標準 HRESULT 值。
IEnumOnSTLImpl::Skip
這個方法提供 Skip 方法的實作。
STDMETHOD(Skip)(ULONG celt);
參數
塞爾特人
[in]要略過的項目數目。
傳回值
標準 HRESULT 值。