arx中的指针引用

arx里经常出现需要指针引用型参数的函数,最典型的就是

acdbOpenObject(

T_OBJECT *& pObj,

AcDbObjectId id,

AcDb::OpenMode mode,

bool openErased = false);

此时pObj指针不需要初始化,只要声明一下,直接传进去就可以了,

但是不能delete它,否则会崩溃。

 

还有些情况特殊一点,比如AcDbLayout的getPlotCfgName函数,它的声明为

getPlotCfgName(const char*& plotCfgName) const;

传一个TCHAR*给它就OK了, 

  TCHAR *CfgName;
  pLayout->getPlotCfgName(CfgName);

也不要delete它,否则会报错,也不要用这种方式调用

CString cfgName;

pLayout->getPlotCfgName((TCHAR*&)cfgName);

因为CString在函数完成后会被析构,其包含的字符串也会被delete

你可能感兴趣的:(arx中的指针引用)