如何定义CArray动态数组?我想在头文件中定义动态数组为什么不可以,因为我想把它传递到另一个类中?
1个回答
展开全部
TYPE是一个由CArray返回的参数。
ARG_TYPE模板参数指定用于访问存储在数组中对象的参数类型。通常是一个对TYPE的参考。ARG_TYPE是一个传递给CArray的参数。
说明:CArray类支持与CArray相似的数组,但是必要时可以动态压缩并扩展。数组索引从0开始。可以决定是固定数组上界还是允许当添加元素时扩展当前的边界。内存对上界是连续地分配空间,甚至一些元素可为空。
和CArray一样,CArray索引元素的访问时间是不变的,与数组大小无关。
提示:在使用一个数组之前,使用SetSize建立它的大小和为它分配内存。如果不使用SetSize,则为数组添加元素就会引起频繁地重新分配和拷贝。频繁地重新分配和拷贝不但没有效率,而且导致内存碎片。
如果需要一堆数组中的个别数据,必须设置CDumpContext对象的深度为1或更大。
此类的某成员函数调用全局帮助函数,它必须为CArray的大多数使用而定制。请参阅宏和全局量部分中的“类收集帮助器”。
当从一个CArray对象中移去元素时,帮助函数DestructElements被调用。
当添加元素时,帮助函数ConstructElements被调用。
数组类的派生与列表的派生相似。
如果要了解关于使用CArray的更多信息,请参阅联机文档“Visual
C++程序员指南”中的“收集”。
请记住:使用CArray一定要包含头文件afxtempl.h。
#include用法CArraym_Array;
m_Array.SetSize(10,10);
CPointpt1(10,10);
m_Array.Add(pt1);
CPointpt2(10,50);
m_Array.Add(pt2);
CPointpt3(10,100);
m_Array.Add(pt3);
intsize=m_Array.GetSize();
CClientDCdc(this);
dc.MoveTo(0,0);CPointpt;for(inti=0;i{
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询