CTypedPtrList Class
Proporciona un “contenedor seguro” para los objetos de la clase CPtrList.
template< class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS
Parámetros
BASE_CLASS
Clase base del tipo de clase de la lista de puntero; debe ser una clase de la lista de puntero (CObList o CPtrList).TYPE
Tipo de los elementos almacenados en la lista de clases base.
Miembros
Métodos públicos
Name |
Descripción |
---|---|
Agrega un elemento (o todos los elementos de otros enumerados) al principio de la lista (crea un nuevo encabezado). |
|
Agrega un elemento (o todos los elementos de otros enumerados) a la cola de la lista (crea una nueva cola). |
|
Obtiene el elemento en una posición determinada. |
|
Devuelve el elemento principal de la lista (no puede estar vacía). |
|
Obtiene el elemento siguiente para recorrer. |
|
Obtiene el elemento anterior para recorrer. |
|
Devuelve el elemento de cola de la lista (no puede estar vacía). |
|
Quita el elemento del encabezado de la lista. |
|
Quita el elemento de cola de la lista. |
|
Establece el elemento en una posición determinada. |
Comentarios
Cuando se utiliza CTypedPtrList en lugar de CObList o CPtrList, ayuda a facilitar la comprobación de tipos de C++ eliminan los errores producidos por los tipos de puntero no coincidentes.
Además, el contenedor de CTypedPtrList realiza muchos del marco que es obligatorio si utilizó CObList o CPtrList.
Dado que todas las funciones de CTypedPtrList inline, el uso de esta plantilla no afecta significativamente el tamaño o la velocidad del código.
Las listas derivadas de CObList pueden serializar, pero las derivadas de CPtrList no pueden.
Cuando se elimina un objeto de CTypedPtrList , o cuando se quitan los elementos, solo se quitan los punteros, no las entidades que hacen referencia.
Para obtener más información sobre cómo utilizar CTypedPtrList, vea los artículos colecciones y Clases basadas en plantillas.
Ejemplo
Este ejemplo crea una instancia de CTypedPtrList, agregue un objeto, serializa la lista en el disco, y se elimina el objeto:
typedef CTypedPtrList<CObList, CMyObject*> CMyList;
CMyList ml;
CMyObject* pMyObject = new CMyObject();
ml.AddTail(pMyObject);
CFileException e;
CFile myFile;
myFile.Open(_T("CTypedPtrList_File.txt"),
CFile::modeCreate|CFile::modeWrite, &e);
CArchive ar(&myFile, CArchive::store);
ml.Serialize(ar);
ar.Close();
myFile.Close();
while (!ml.IsEmpty())
{
delete ml.GetHead();
ml.RemoveHead();
}
class CMyObject : public CObject
{
public:
int i;
void Serialize(CArchive& ar);
CMyObject() { i = 9876;}
protected:
DECLARE_SERIAL(CMyObject)
};
IMPLEMENT_SERIAL(CMyObject, CObject, 0)
void CMyObject::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if(ar.IsStoring())
ar << i;
else
ar >> i;
}
Jerarquía de herencia
BASE_CLASS
_CTypedPtrList
CTypedPtrList
Requisitos
encabezado: afxtempl.h