CList 有关问题

CList 问题
一、首先我定义了一个类,作为CList的模板

class   CComData    
{
public:
CComData();
virtual   ~CComData();

public:
int   a;
int   b;
int   c;
int   d;
};

二、定义了CList对象和CComData对象和CList的点

//SP-A15.3定义以串口数据包(一帧数据)为模板的列表
CList <CComData,CComData&>   list;

//SP-A15.4串口数据对象
CComData   ComData;

//SP-A15.7定义CList第一个点(放在此处编译出错,已放入应用的文件中)
POSITION   posHead;

三、在读线程中添加点

//SP-A15.5串口类赋初值,准备填写CList
ComData.a=szText_R[0];
ComData.b=szText_R[1];
ComData.c=szText_R[2];
ComData.d=szText_R[3];

//SP-A15.6增加点
list.AddTail(ComData);

//SP-A15.8,改放在此处,则编译不出错
posHead   =   list.GetHeadPosition();

四、当我想在其他线程(主线程)中取CList的点就出错啦
Assertion   Failed!
File   afxtempl.h,Line   701

一直没搞懂,痛苦死啦,请各位老大指点。

------解决方案--------------------
1. CList <CComData *,CComData *> list;
2. CComData创建化时用 CComData * p = new CComData();
------解决方案--------------------
原因:你的CComData没有用new,所以作用域很小, 自动被删除了。 链表中只保存了空地址。