从AcDbObjectPointer<;对象>;
我想这样做…编辑:添加内容
template
class AcDbObjectPtr : public AcDbObjectPointer
{
public:
explicit AcDbObjectPtr(T_OBJECT *pObj =0) throw();
private:
AcDbObjectPtr(AcDbObjectPtr &pObject);
AcDbObjectPtr& operator=(AcDbObjectPtr &pObject);
};
template inline
AcDbObjectPtr::AcDbObjectPtr(T_OBJECT *pObj)
{
m_ptr = pObj;
if (m_ptr == NULL)
m_status =Acad::eNullObjectPointer;
else
m_status = Acad::eOk;
}
因此我可以使用智能指针的构造函数(我不喜欢使用acquire()或create())
AcDbObjectPtr pLine(new AcDbLine(AcGePoint3d(0,0,0), AcGePoint3d(100,100,0) ));
if(pLine.openStatus() != Acad::eOk)
// 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;
}
页:
[1]