找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 953|回复: 10

[求助]:自定义实体继承问题

[复制链接]
发表于 2006-5-24 10:15:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在dbx中自定义了3个实体A B C ,B继承A,C继承B,卸载dbx的时候autocad报错“B still has registered descendant”,然后crash掉,请问在dbx里怎么控制他们的卸载顺序呢
是不是与 #define ASDKEOBJECT_DBXSERVICE "ASDKEOBJECT_DBXSERVICE"  有关呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-5-24 11:11:32 | 显示全部楼层
卸载顺序没研究过,但加载是必须有顺序的:
第一:A
第二:B
第三:C
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-24 12:02:43 | 显示全部楼层
我们的3个类是写在一个dbx里的,是不是要分成3个dbx来写啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-24 12:42:42 | 显示全部楼层
当然要分开来的,标准的模块化设计,这是C++最根本的原则,这样具有很高的独立性同时又便于维护。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-24 13:12:54 | 显示全部楼层
卸载也需要顺序的,先卸载子类
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-24 20:47:22 | 显示全部楼层
给个提示,利用引用次数,当引用次数为0时,才可以卸载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-25 19:57:24 | 显示全部楼层
不好意思,可能我没说清楚,并不是创建的对象析构时的问题(如果仅仅载入dbx,紧接着卸掉,就能crash了),我想是不是加载dbx的时候,会把自定义的类注册到cad里,当卸载dbx的时候,再把注册信息去掉,这时发生了错误(我对arx的机制不熟,仅仅是猜测,不知对不对)

刚开始的时候我看了论坛上的贴子,说是dbx和arx区别不大,于是就试着在arx里面写,但是图形画不出来,于是又用dbx写,除了这个问题其他正常。曾经试着分开来在几个dbx里面写,但是链接时出错,子类链接不到父类的函数,必须把父类的源文件加入到子类的文件夹,并加进子类的项目里,才能生成,不知道是什么原因,还望哪位兄弟指点一番,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-25 20:36:32 | 显示全部楼层
只需要.h文件和lib文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-25 22:30:44 | 显示全部楼层
在B类的头文件开始要包含A类的头文件,同时在VC选项的目录项中:
头文件包含目录中添加A类的头文件所在的目录;
Lib库文件包含目录中添加A类的lib文件的目录;
在连接选项中加入A.lib。
这样B完全可以继承A类,同时使用基类的相关数据和函数,根本不用将基类的任何文件加入到子类中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-26 10:13:50 | 显示全部楼层
多个有继承关系的自定义实体类,放在同一个DBX中是不会有问题的。
模块化的思想可不是指要把各个类都放在不同的dbx里,试想一下,如果我要定义100个类,那不有100个dbx了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-26 11:03:40 | 显示全部楼层
自定义类的意义在于一些复杂的但又具有统一性的操作、数据等进行封装,你要定义100个类或则1000个类,看一下AutoCAD数据库本身有多少类?什么都去做一个一个自定义类,那简直是小提大作。坚决提倡发挥类的继承优势和独立优势,独立性有利于文件的管理,对开发者来说也是思路清晰。毫不相干的100个类没有必要继承在一个文件中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 01:29 , Processed in 0.528589 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表