Compartilhar via


Classe CTypedPtrList

Fornece uma segurança de tipos "empacotador" para objetos de classeCPtrList.

template< class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS

Parâmetros

  • BASE_CLASS
    Classe da classe de lista de tipos ponteiro base; deve ser uma classe de lista de ponteiro (CObList ou CPtrList).

  • TYPE
    Tipo de elementos armazenados na lista de classe base.

Comentários

Quando você usa CTypedPtrList em vez de CObList ou CPtrList, o recurso de verificação de tipo C++ ajuda a eliminar erros causados por tipos ponteiro incompatíveis.

Além disso, a CTypedPtrList wrapper realiza grande parte do elenco que seria necessário se você tiver usado CObList ou CPtrList.

Porque todos os CTypedPtrList funções in-line, uso deste modelo não afeta significativamente o dimensionar ou a velocidade do seu código.

Listas derivado de CObList pode ser serializada, mas aqueles derivado CPtrList não é possível.

Quando um CTypedPtrList objeto é excluído, ou quando seus elementos são removidos, apenas os ponteiros são removidos, não as entidades que fazem referência.

Para obter mais informações sobre como usar CTypedPtrList, consulte os artigos Coleções and Classes com base em modelo.

Exemplo

Este exemplo cria uma instância de CTypedPtrList, adiciona um objeto, serializa a lista de disco e, em seguida, exclui o 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;
}

Requisitos

Cabeçalho: afxtempl.h

Consulte também

Tarefas

COLETAR Exemplo: Ilustra as classes de coleção do MFC

Referência

Gráfico de hierarquia

Classe CPtrList

Classe cObList

Outros recursos

CTypedPtrList membros