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
Celte
[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
Celte
[in] Nombre d’éléments à ignorer.
Valeur de retour
Valeur HRESULT standard.