ICollectionOnSTLImpl クラス
このクラスでは、コレクション クラスで使用されるメソッドが提供されます。
構文
template <class T, class CollType, class ItemType, class CopyItem, class EnumType>
class ICollectionOnSTLImpl : public T
パラメーター
T
COM コレクション インターフェイス。
CollType
C++ 標準ライブラリ コンテナー クラス。
アイテムの種類
コンテナー インターフェイスによって公開される項目の型。
CopyItem
コピー ポリシー クラス。
EnumType
CComEnumOnSTL と互換性のある列挙子クラス。
メンバー
パブリック メソッド
名前 | 説明 |
---|---|
ICollectionOnSTLImpl::get__NewEnum | コレクションの列挙子オブジェクトを返します。 |
ICollectionOnSTLImpl::getcount | コレクション内の要素の数を返します。 |
ICollectionOnSTLImpl::get_Item | コレクションから要求された項目を返します。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
ICollectionOnSTLImpl::m_coll | コレクションです。 |
解説
このクラスでは、コレクション インターフェイスの 3 つのメソッド (getcount、get_Item、および get__NewEnum) の実装を提供します。
このクラスを使用するには、次のようにします。
実装するコレクション インターフェイスを定義 (または借用) します。
このコレクション インターフェイスに基づいて、
ICollectionOnSTLImpl
の特殊化からクラスを派生させます。派生クラスを使用して、
ICollectionOnSTLImpl
によって処理されないコレクション インターフェイスからメソッドを実装します。
Note
コレクション インターフェイスがデュアル インターフェイスの場合は、クラスを IDispatchImpl から派生させ、ATL で IDispatch
メソッドの実装を提供する場合に最初のテンプレート パラメーターとして ICollectionOnSTLImpl
特殊化を渡します。
- コレクションに読み込むために m_coll メンバーに項目を追加します。
詳細と例については、「ATL コレクションと列挙子」を参照してください。
継承階層
T
ICollectionOnSTLImpl
要件
ヘッダー: atlcom.h
ICollectionOnSTLImpl::getcount
このメソッドは、コレクション内の項目の数を返します。
STDMETHOD(getcount)(long* pcount);
パラメーター
pcount
[出力] コレクション内の要素の数。
戻り値
標準の HRESULT 値。
ICollectionOnSTLImpl::get_Item
このメソッドでは、コレクションから指定された項目を返します。
STDMETHOD(get_Item)(long Index, ItemType* pvar);
パラメーター
インデックス
[入力] コレクション内の項目の 1 から始まるインデックス。
pvar
[出力] Index に対応する項目。
戻り値
標準の HRESULT 値。
解説
項目は、ICollectionOnSTLImpl
特殊化でテンプレート引数として渡されたコピー ポリシー クラスの copy メソッドを使用して、m_coll 内の指定された位置にあるデータをコピーすることで取得されます。
ICollectionOnSTLImpl::get__NewEnum
コレクションの列挙子オブジェクトを返します。
STDMETHOD(get__NewEnum)(IUnknown** ppUnk);
パラメーター
ppUnk
[出力] 新しく作成された列挙子オブジェクトの IUnknown ポインター。
戻り値
標準の HRESULT 値。
解説
新しく作成された列挙子では、元のコレクション m_coll
の反復子を維持し (したがって、コピーは作成されない)、コレクション オブジェクトに対する COM 参照を保持して、未処理の列挙子がある間もコレクションが確実に存続するようにします。
ICollectionOnSTLImpl::m_coll
このメンバーでは、コレクションによって表される項目を保持します。
CollType m_coll;