Partage via


IEnumOnSTLImpl, classe

Cette classe définit une interface d’énumérateur basée sur une collection de bibliothèques standard C++.

Syntaxe

template <class Base,
    const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base

Paramètres

Base
Énumérateur COM. Consultez IEnumString pour obtenir un exemple.

piid
Pointeur vers l’ID d’interface de l’interface d’énumérateur.

T
Type d’élément exposé par l’interface d’énumérateur.

Copy
Classe de stratégie de copie.

CollType
Classe de conteneur de bibliothèque standard C++.

Membres

Méthodes publiques

Nom Description
IEnumOnSTLImpl ::Clone Implémentation de Clone.
IEnumOnSTLImpl ::Init Initialise l'énumérateur.
IEnumOnSTLImpl ::Next Implémentation de Next.
IEnumOnSTLImpl ::Reset Implémentation de la réinitialisation.
IEnumOnSTLImpl ::Skip Implémentation de Skip.

Membres de données publics

Nom Description
IEnumOnSTLImpl ::m_iter Itérateur qui représente la position actuelle de l’énumérateur dans la collection.
IEnumOnSTLImpl ::m_pcollection Pointeur vers le conteneur de bibliothèque standard C++ contenant les éléments à énumérer.
IEnumOnSTLImpl ::m_spUnk Pointeur IUnknown de l’objet fournissant la collection.

Notes

IEnumOnSTLImpl fournit l’implémentation d’une interface d’énumérateur COM où les éléments énumérés sont stockés dans un conteneur compatible avec la bibliothèque standard C++. Cette classe est analogue à la classe CComEnumImpl , qui fournit une implémentation pour une interface d’énumérateur basée sur un tableau.

Remarque

Consultez CComEnumImpl ::Init pour plus d’informations sur les différences CComEnumImpl entre et IEnumOnSTLImpl.

En règle générale, vous n’aurez pas besoin de créer votre propre classe d’énumérateur en dérivant de cette implémentation d’interface. Si vous souhaitez utiliser un énumérateur fourni par ATL basé sur un conteneur de bibliothèque standard C++, il est plus courant de créer une instance de CComEnumOnSTL ou de créer une classe de collection qui retourne un énumérateur en dérivant de ICollectionOnSTLImpl.

Toutefois, si vous devez fournir un énumérateur personnalisé (par exemple, un qui expose des interfaces en plus de l’interface d’énumérateur), vous pouvez dériver de cette classe. Dans ce cas, il est probable que vous devrez remplacer la méthode Clone pour fournir votre propre implémentation.

Hiérarchie d'héritage

Base

IEnumOnSTLImpl

Spécifications

En-tête : atlcom.h

IEnumOnSTLImpl ::Init

Initialise l'énumérateur.

HRESULT Init(
    IUnknown* pUnkForRelease,
    CollType& collection);

Paramètres

pUnkForRelease
[in] Pointeur IUnknown d’un objet qui doit être conservé actif pendant la durée de vie de l’énumérateur. Transmettez NULL s’il n’existe aucun objet de ce type.

collection
Référence au conteneur de bibliothèque standard C++ qui contient les éléments à énumérer.

Valeur de retour

Valeur HRESULT standard.

Notes

Si vous transmettez Init une référence à une collection conservée dans un autre objet, vous pouvez utiliser le paramètre pUnkForRelease pour vous assurer que l’objet et la collection qu’il contient est disponible tant que l’énumérateur en a besoin.

Vous devez appeler cette méthode avant de transmettre un pointeur à l’interface d’énumérateur à tous les clients.

IEnumOnSTLImpl ::Clone

Cette méthode fournit l’implémentation de la méthode Clone en créant un objet de type CComEnumOnSTL, en l’initialisant avec la même collection et itérateur utilisé par l’objet actuel, et en retournant l’interface sur l’objet nouvellement créé.

STDMETHOD(Clone)(Base** ppEnum);

Paramètres

ppEnum
[out] Interface d’énumérateur sur un objet nouvellement créé cloné à partir de l’énumérateur actuel.

Valeur de retour

Valeur HRESULT standard.

IEnumOnSTLImpl ::m_spUnk

Pointeur IUnknown de l’objet fournissant la collection.

CComPtr<IUnknown> m_spUnk;

Notes

Ce pointeur intelligent conserve une référence sur l’objet passé à IEnumOnSTLImpl ::Init, ce qui garantit qu’il reste actif pendant la durée de vie de l’énumérateur.

IEnumOnSTLImpl ::m_pcollection

Ce membre pointe vers la collection qui fournit les données qui pilotent l’implémentation de l’interface d’énumérateur.

CollType* m_pcollection;

Notes

Ce membre est initialisé par un appel à IEnumOnSTLImpl ::Init.

IEnumOnSTLImpl ::m_iter

Ce membre contient l’itérateur utilisé pour marquer la position actuelle dans la collection et accéder aux éléments suivants.

CollType::iterator m_iter;

IEnumOnSTLImpl ::Next

Cette méthode fournit l’implémentation de la méthode Next .

STDMETHOD(Next)(
    ULONG celt,
    T* rgelt,
    ULONG* pceltFetched);

Paramètres

Celt
[in] Nombre d’éléments demandés.

rgelt
[out] Tableau à remplir avec les éléments.

pceltFetched
[out] Nombre d’éléments retournés en réalité dans rgelt. Cela peut être inférieur à celte si moins d’éléments celtes restent dans la liste.

Valeur de retour

Valeur HRESULT standard.

IEnumOnSTLImpl ::Reset

Cette méthode fournit l’implémentation de la méthode Reset .

STDMETHOD(Reset)(void);

Valeur de retour

Valeur HRESULT standard.

IEnumOnSTLImpl ::Skip

Cette méthode fournit l’implémentation de la méthode Skip .

STDMETHOD(Skip)(ULONG celt);

Paramètres

Celt
[in] Nombre d’éléments à ignorer.

Valeur de retour

Valeur HRESULT standard.

Voir aussi

Vue d’ensemble de la classe