乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 45|回复: 3

AcArray的使用问题?

[复制链接]

17

主题

68

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2008-4-14 23:54:00 | 显示全部楼层 |阅读模式
我定义了一个动态数组
typedef AcArray AcDbLayerNameArray;
在使用时,
AcDbLayerNameArray  layerNameArray;
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了,没能动态变化?
回复

使用道具 举报

0

主题

64

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
64
发表于 2008-4-15 12:36:00 | 显示全部楼层

你的使用有问题。AcArray是用来放ACAD自己做的类的,通常是AcDbObjectId等等。你要装其他实例,需要对第二个默认参数进行设置。建议不要用AcArray来装String这些东西。没必要,完全可以用STD的类来代替。
回复

使用道具 举报

17

主题

68

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2008-4-15 13:08:00 | 显示全部楼层
使用MFC时,定义成typedef AcArray AcDbLayerNameArray;可以通过,不过
因为不能用contains等函数,有点麻烦.看来AcArray仅能定义自己的类和简单的型.其他的还得用CArray.
回复

使用道具 举报

0

主题

64

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
64
发表于 2008-4-16 20:39:00 | 显示全部楼层
这是CAD提供的Array,你要装别的类型也是可以的,我相信调用contains应该都没有问题,它底层的实现应该还是STD的东西吧。关键你用AcArray传复杂对象,你得告诉它怎么去析构这里面的每个实例,也就是第二个原来默认的参数要进行设置。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-6 07:03 , Processed in 0.149369 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表