Compartilhar via


Classe CTypedPtrList

Fornece um “wrapper” com segurança para objetos de classe CPtrList.

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

Parâmetros

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

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

Membros

Métodos públicos

Nome

Descrição

CTypedPtrList::AddHead

Adiciona elemento (ou todos os elementos em outros lista) no início da lista (faz um novo o início.)

CTypedPtrList::AddTail

Adiciona elemento (ou todos os elementos em outros lista) ao final da lista (faz uma nova parte final).

CTypedPtrList::GetAt

Obtém o elemento em uma posição determinada.

CTypedPtrList::GetHead

Retorna o elemento principal de lista (não pode ser deixado).

CTypedPtrList::GetNext

Obtém o próximo elemento para iterar.

CTypedPtrList::GetPrev

Obtém o elemento anterior para iterar.

CTypedPtrList::GetTail

Retorna o elemento da parte final da lista (não pode ser deixado).

CTypedPtrList::RemoveHead

Remove o elemento do início da lista.

CTypedPtrList::RemoveTail

Remove o elemento da parte final da lista.

CTypedPtrList::SetAt

Define o elemento em uma posição determinada.

Comentários

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

Além de isso, o wrapper de CTypedPtrList executa grande parte da conversão que seria necessária se você usou CObList ou CPtrList.

Como todas as funções de CTypedPtrList são in-line, o uso de esse modelo não afeta significativamente o tamanho ou velocidade do seu código.

As listas de CObList derivadas podem ser serializadas, mas essas derivadas de CPtrList não podem.

Quando um objeto de CTypedPtrList é excluído, ou quando seus elementos são removidos, somente os ponteiros são removidos, não as entidades que referenciam.

Para obter mais informações sobre como usar CTypedPtrList, consulte os artigos coleções e Classes com base Modelo-.

Exemplo

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

Hierarquia de herança

BASE_CLASS

_CTypedPtrList

CTypedPtrList

Requisitos

Cabeçalho: afxtempl.h

Consulte também

Referência

Gráfico da hierarquia

Classe CPtrList

Classe cObList

Conceitos

O exemplo COLETA MFC