19,468
社区成员
发帖
与我相关
我的任务
分享
class A
{
public:
A(void);
~A(void);
public:
int m_nPointCount;//多边形点的个数
PointF *m_ptPolygon; //记录多边形的坐标(动态分配内存)
}
其中:
A::~A(void)
{
if (m_ptPolygon!=NULL)
{
delete[] m_ptPolygon;
m_ptPolygon = NULL;
m_nPointCount = 0;
}
}
我把结构体A放到了CArray<A,A&>中,且有如下操作:
CArray< A,A&> m_Source;
CArray< A,A&> m_Copy;
m_Copy.Copy(m_Source);
m_Source.RemoveAll();
发现m_Source在RemoveAll()执行后,m_Copy中的结构体A中的m_ptPolygon的数据也被清空了.
也就是说,CArray的m_Copy.Copy函数,只是把m_Source中的A.m_ptPolygon的地址Copy过来,随着m_Source中A的析构函数执行,那么m_Copy中的A.m_ptPolygon的地址所指向的数据已经被清空掉了...
请问,应该要怎么做才可以让m_Source中A.m_ptPolygon的数据跟着Copy进m_Copy?