IEnumOnSTLImpl (clase)
Esta clase define una interfaz de enumerador basada en una colección de bibliotecas estándar de C++.
Sintaxis
template <class Base,
const IID* piid, class T, class Copy, class CollType>
class ATL_NO_VTABLE IEnumOnSTLImpl : public Base
Parámetros
Base
Enumerador COM. Consulte IEnumString para ver un ejemplo.
piid
Puntero al Id. de interfaz de la interfaz del enumerador.
T
El tipo de elemento expuesto por la interfaz del enumerador.
Copiar
Una clase de directiva de copia.
CollType
Una clase contenedora de la Biblioteca estándar de C++.
Miembros
Métodos públicos
Nombre | Descripción |
---|---|
IEnumOnSTLImpl::Clone | La implementación de Clone. |
IEnumOnSTLImpl::Init | Inicializa el enumerador. |
IEnumOnSTLImpl::Next | La implementación de Next. |
IEnumOnSTLImpl::Reset | La implementación de Reset. |
IEnumOnSTLImpl::Skip | La implementación de Skip. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
IEnumOnSTLImpl::m_iter | Iterador que representa la posición actual del enumerador dentro de la colección. |
IEnumOnSTLImpl::m_pcollection | Puntero al contenedor de la biblioteca estándar de C++ que contiene los elementos que se van a enumerar. |
IEnumOnSTLImpl::m_spUnk | Puntero IUnknown del objeto que proporciona la colección. |
Comentarios
IEnumOnSTLImpl
proporciona la implementación de una interfaz de enumerador COM donde los elementos enumerados se almacenan en un contenedor compatible con la biblioteca estándar de C++. Esta clase es análoga a la clase CComEnumImpl, que proporciona una implementación para una interfaz de enumerador basada en una matriz.
Nota:
Consulte CComEnumImpl::Init para obtener más información sobre las diferencias entre CComEnumImpl
y IEnumOnSTLImpl
.
Normalmente, no es necesario crear su propia clase de enumerador derivando de esta implementación de interfaz. Si desea usar un enumerador proporcionado por ATL basado en un contenedor de biblioteca estándar de C++, es más común crear una instancia de CComEnumOnSTL o crear una clase de colección que devuelva un enumerador derivando de ICollectionOnSTLImpl.
Sin embargo, si necesita proporcionar un enumerador personalizado (por ejemplo, uno que expone interfaces, además de la interfaz del enumerador), puede derivar a partir de esta clase. En esta situación, es probable que tenga que invalidar el método Clone para proporcionar su propia implementación.
Jerarquía de herencia
Base
IEnumOnSTLImpl
Requisitos
Encabezado: atlcom.h
IEnumOnSTLImpl::Init
Inicializa el enumerador.
HRESULT Init(
IUnknown* pUnkForRelease,
CollType& collection);
Parámetros
pUnkForRelease
[in] Puntero IUnknown
de un objeto que se debe mantener activo durante la vigencia del enumerador. Pase un valor NULL si no existe este objeto.
collection
Referencia al contenedor de la biblioteca estándar de C++ que contiene los elementos que se van a enumerar.
Valor devuelto
Valor HRESULT estándar.
Comentarios
Si pasa Init
una referencia a una colección que se mantiene en otro objeto, puede usar el parámetro pUnkForRelease para asegurarse de que el objeto, y la colección que contiene, está disponible siempre que el enumerador lo necesite.
Debe llamar a este método antes de volver a pasar a los clientes un puntero dirigido a la interfaz del enumerador.
IEnumOnSTLImpl::Clone
Este método proporciona la implementación del método Clone creando un objeto de tipo CComEnumOnSTL
, inicializándolo con la misma colección e iterador utilizado por el objeto actual y devolviendo la interfaz en el objeto recién creado.
STDMETHOD(Clone)(Base** ppEnum);
Parámetros
ppEnum
[out] Interfaz del enumerador en un objeto recién creado y clonado desde el enumerador actual.
Valor devuelto
Valor HRESULT estándar.
IEnumOnSTLImpl::m_spUnk
Puntero IUnknown
del objeto que proporciona la colección.
CComPtr<IUnknown> m_spUnk;
Comentarios
Este puntero inteligente mantiene una referencia en el objeto pasado a IEnumOnSTLImpl::Init, asegurándose de que permanece activo durante la vigencia del enumerador.
IEnumOnSTLImpl::m_pcollection
Este miembro apunta a la colección que proporciona los datos que impulsan la implementación de la interfaz del enumerador.
CollType* m_pcollection;
Comentarios
Este miembro se inicializa mediante una llamada a IEnumOnSTLImpl::Init.
IEnumOnSTLImpl::m_iter
Este miembro contiene el iterador usado para marcar la posición actual dentro de la colección y navegar a los elementos posteriores.
CollType::iterator m_iter;
IEnumOnSTLImpl::Next
Este método proporciona la implementación del método Next.
STDMETHOD(Next)(
ULONG celt,
T* rgelt,
ULONG* pceltFetched);
Parámetros
celta
[in] Número de elementos solicitados.
rgelt
[out] Matriz que se va a rellenar con los elementos .
pceltFetched
[out] Número de elementos realmente devueltos en rgelt. Esto puede ser menor que celt si menos elementos celt permanecen en la lista.
Valor devuelto
Valor HRESULT estándar.
IEnumOnSTLImpl::Reset
Este método proporciona la implementación del método Reset.
STDMETHOD(Reset)(void);
Valor devuelto
Valor HRESULT estándar.
IEnumOnSTLImpl::Skip
Este método proporciona la implementación del método Skip.
STDMETHOD(Skip)(ULONG celt);
Parámetros
celta
[in] Número de elementos que se van a omitir.
Valor devuelto
Valor HRESULT estándar.