Classe de 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 |
---|---|
Adiciona elemento (ou todos os elementos em outros lista) no início da lista (faz um novo o início.) |
|
Adiciona elemento (ou todos os elementos em outros lista) ao final da lista (faz uma nova parte final). |
|
Obtém o elemento em uma posição determinada. |
|
Retorna o elemento principal de lista (não pode ser deixado). |
|
Obtém o próximo elemento para iterar. |
|
Obtém o elemento anterior para iterar. |
|
Retorna o elemento da parte final da lista (não pode ser deixado). |
|
Remove o elemento do início da lista. |
|
Remove o elemento da parte final da lista. |
|
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