乐筑天下

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

从AcDbObjectPointer<对象>

[复制链接]
LE3

10

主题

149

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
189
发表于 2010-5-15 08:55:42 | 显示全部楼层 |阅读模式
我想这样做…
编辑:添加内容
  1. template
  2. class AcDbObjectPtr : public AcDbObjectPointer
  3. {
  4. public:
  5.   explicit AcDbObjectPtr(T_OBJECT *pObj =0) throw();
  6. private:
  7.   AcDbObjectPtr(AcDbObjectPtr &pObject);
  8.   AcDbObjectPtr& operator=(AcDbObjectPtr &pObject);
  9. };
  10. template inline
  11. AcDbObjectPtr::AcDbObjectPtr(T_OBJECT *pObj)
  12. {
  13.   m_ptr = pObj;
  14.   if (m_ptr == NULL)
  15.     m_status =  Acad::eNullObjectPointer;
  16.   else
  17.     m_status = Acad::eOk;
  18. }

因此我可以使用智能指针的构造函数(我不喜欢使用acquire()或create())
  1. AcDbObjectPtr pLine(new AcDbLine(AcGePoint3d(0,0,0), AcGePoint3d(100,100,0) ));
  2.       if(pLine.openStatus() != Acad::eOk)
  3.         // do something

我为什么不这样做workingDatabase();
    if(!pDatabase)
      return Acad::eNoDatabase;
    AcDbBlockTableRecordPointer pCurrentSpace(pDatabase->currentSpaceId(),AcDb::kForWrite);
    if((es = pCurrentSpace.openStatus()) != eOk)
      return es;
    AcDbObjectPtr pLine(new AcDbLine(AcGePoint3d(0,0,0), AcGePoint3d(100,100,0) ));
    if(pLine.openStatus() != Acad::eOk)
      return Acad::eOutOfMemory;
    es = pCurrentSpace->appendAcDbEntity(pLine);
    return es;
  }
[/code]
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 20:55 , Processed in 0.148237 second(s), 54 queries .

© 2020-2025 乐筑天下

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