AcArray的使用问题?
我定义了一个动态数组typedef AcArray AcDbLayerNameArray;
在使用时,
AcDbLayerNameArraylayerNameArray;
ACHAR* strLayerName;
CString str;
int i;
for (i=0; i
// 获得 strLayerName ;
str.Format(L"%s", strLayerName);
layerNameArray.append(str);
}
当i=8时,出错。不知道什么原因?
另外在AcArray的定义中,有
template> class AcArray
{
public:
AcArray(int initPhysicalLength = 0, int initGrowLength = 8);
AcArray(const AcArray&);
~AcArray();
。。。
}
好像是layerNameArray的大小被固定在initGrowLength = 8了,没能动态变化?
你的使用有问题。AcArray是用来放ACAD自己做的类的,通常是AcDbObjectId等等。你要装其他实例,需要对第二个默认参数进行设置。建议不要用AcArray来装String这些东西。没必要,完全可以用STD的类来代替。
使用MFC时,定义成typedef AcArray AcDbLayerNameArray;可以通过,不过
因为不能用contains等函数,有点麻烦.看来AcArray仅能定义自己的类和简单的型.其他的还得用CArray.
这是CAD提供的Array,你要装别的类型也是可以的,我相信调用contains应该都没有问题,它底层的实现应该还是STD的东西吧。关键你用AcArray传复杂对象,你得告诉它怎么去析构这里面的每个实例,也就是第二个原来默认的参数要进行设置。
页:
[1]