不知道有没有朋友也用 CTypedPtrArray 的。
最近使用是这样的:
CTypedPtrArray<CObArray, Point3D *> m_PointList;
...
Point3D *TempPoint3D = new Point3D;
for(...)
{
...
m_PointList->Add(TempPoint3D);
...
}
然后我把m_PointList中的结果打印了出来,擦擦的,问题大大的。
如果我的数据假设是:
1,2,3,4,5,6
那么我打印出来的结果是:
6,6,6,6,6,6
所有前面的数据貌似都更新成了最后读取和Add的一个数据了。
问题在哪呢,查找了半天,终于发现:
TempPoint3D的定义是在for循环外的,Add函数添加新数据必须将添加完成的TempPoint3D指针释放掉才能下次使用。
于是,改成如下这样就行了:
for(...)
{
Point3D *TempPoint3D = new Point3D;
...
m_PointList->Add(TempPoint3D);
...
}
问题解决。
朋友说现在使用CTypedPtrArray实在是有点过时了,我也不求甚解了,先用着,基础的操作功能都有,挺方便了。