Класс CTypedPtrList
Предоставляет типобезопасную "программу-оболочку" для объектов класса CPtrList.
template< class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS
Параметры
BASE_CLASS
Базовый класс типизированного класса списка указателя. должен быть классом списка указателя " (CObList или CPtrList).TYPE
Тип элементов, хранящихся в списке базового класса.
Члены
Открытые методы
Имя |
Описание |
---|---|
Добавляет элемент (или все элементы в других список) в начало списка (делает новую головку). |
|
Добавляет элемент (или все элементы в других список) в кабелю списка (делает новый хвост). |
|
Возвращает элемент на заданной позиции. |
|
Возвращает головной элемент списка (не может быть пустым). |
|
Возвращает следующий элемент для итерации. |
|
Возвращает предыдущий элемент для итерации. |
|
Возвращает элемент списка с префиксом tail (не может быть пустым). |
|
Удаляет элемент из списка head. |
|
Удаляет элемент из списка с префиксом tail. |
|
Задает элемент по заданной позиции. |
Заметки
При использовании CTypedPtrList, а не CObList или CPtrList, средства проверки типа C++ кроме ошибки, вызванные рассогласованными типами указателя.
Кроме того, программа-оболочка CTypedPtrList выполняет многие приведения, необходимой при использовании CObList или CPtrList.
Поскольку все функции CTypedPtrList встроенным использование данного шаблона в значительной степени не влияет на размер или скорости кода.
Списки, производные от CObList может быть сериализован, но эти производные от CPtrList не могут.
Если объект CTypedPtrList удаления или при его элементы удалены указатели, а не только удалены сущности, на который они ссылаются.
Дополнительные сведения об использовании CTypedPtrList см. в разделе статьи коллекции и Шаблон- на основе классов.
Пример
В этом примере создается экземпляр CTypedPtrList добавляет один объект сериализует список на диск, а затем удаляет объект.
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;
}
Иерархия наследования
BASE_CLASS
_CTypedPtrList
CTypedPtrList
Требования
Header: afxtempl.h