Compartir a través de


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

CTypedPtrList::AddHead

Agrega un elemento (o todos los elementos de otros enumerados) al principio de la lista (crea un nuevo encabezado).

CTypedPtrList::AddTail

Agrega un elemento (o todos los elementos de otros enumerados) a la cola de la lista (crea una nueva cola).

CTypedPtrList::GetAt

Obtiene el elemento en una posición determinada.

CTypedPtrList::GetHead

Devuelve el elemento principal de la lista (no puede estar vacía).

CTypedPtrList::GetNext

Obtiene el elemento siguiente para recorrer.

CTypedPtrList::GetPrev

Obtiene el elemento anterior para recorrer.

CTypedPtrList::GetTail

Devuelve el elemento de cola de la lista (no puede estar vacía).

CTypedPtrList::RemoveHead

Quita el elemento del encabezado de la lista.

CTypedPtrList::RemoveTail

Quita el elemento de cola de la lista.

CTypedPtrList::SetAt

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

Vea también

Referencia

Gráfico de jerarquías

CPtrList Class

CObList Class

Conceptos

El ejemplo de MFC como GET