次の方法で共有


CTypedPtrList クラス

CPtrList クラスのオブジェクトに対してタイプ セーフな "ラップ" が用意されています。

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

パラメーター

  • BASE_CLASS
    型指定されたポインターのリスト クラスの基本クラス; ポインターのリスト クラスはである必要があります (CObListCPtrList)。

  • TYPE
    基本クラス リストに格納されている要素の型。

メンバー

850101a7.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CTypedPtrList::AddHead

要素 (またはほかのリストのすべての要素) をリストの先頭に追加します (その要素を新たに先頭とします)。

CTypedPtrList::AddTail

要素 (またはほかのリストのすべての要素) をリストの末尾に追加します (その要素を新たに末尾とします)。

CTypedPtrList::GetAt

指定した位置の要素を取得します。

CTypedPtrList::GetHead

リストの先頭要素を返します。リストが空のときは使用できません。

CTypedPtrList::GetNext

次の要素を順番に取得します。

CTypedPtrList::GetPrev

順次アクセスするときの直前の要素を取得します。

CTypedPtrList::GetTail

リストの末尾要素を返します。リストが空のときは使用できません。

CTypedPtrList::RemoveHead

リストの先頭にある要素を削除します。

CTypedPtrList::RemoveTail

リストの末尾にある要素を削除します。

CTypedPtrList::SetAt

指定した位置に要素を設定します。

解説

CObListCPtrListではなく CTypedPtrList を使用すると、C++ の型チェック機能のヘルプには対応していないポインター型によるエラーがなくなります。

また、CTypedPtrList ラッパーは CObListCPtrListを使用して必要なキャストの多くを実行します。

CTypedPtrList のすべての関数がインラインであるため、このテンプレートの使用は、コードのサイズや速度に影響を与えません。

CObList から派生したリストをシリアル化できますが CPtrList から派生したクラスはできません。

CTypedPtrList のオブジェクトを削除または要素が削除されたときに、ポインターだけが削除されます、参照する、エンティティです。

CTypedPtrListの使用の詳細については、" " [コレクション]テンプレート ベースのクラスを参照してください。

使用例

この例では CTypedPtrListのインスタンスを作成し、オブジェクトを 1 つ追加し、ディスクにリストをシリアル化し、オブジェクトを削除します:

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

参照

関連項目

階層図

CPtrList クラス

CObList クラス

概念

MFC のサンプルが収集されます