2013-07-05 104 views
0

这是从Autodesk公司的AutoCAD的官方文档2013(ObjectARX的SDK):char&*是什么意思?

ObjectARX的AutoCAD的2013:自述文件 - >提示和技巧 - >解放出来 * 字符串返回非常量指针: *

当调用返回字符串指针(对于 例如,AcDbSymbolTable::getName(char&* pName)),你应该释放 内存返回的字符串占据非const方法,例如:

// The getName() call should be followed by a call to 
acutDelString(pLtName);pLtTableRcd->getName(pLtName); 
// ... other code 
acutDelString(pLtName); 

请注意,某些ObjectARX示例文件缺少调用内存的空闲 ,所以它们会显示内存泄漏。在自己的代码中使用样本 时,请确保正确释放内存。

什么下一个参数类型平均:

AcDbSymbolTable::getName(char&* pName)) 

难道指针char&?凭什么?何时使用这种结构?

谢谢。

回答

6

根据clockwise/spiral rulepName是指向对char的引用的指针。

我会说,它有一个指针指向参考没有多大意义。另一种方法(引用指针)可能很有用,但您可以更改函数内的指针。

+11

它不是没有意义,它被标准禁止,请参阅[dcl.ref]/5 _“不应该引用引用,不应该引用运行时绑定数组,不引用任何数组, 并且没有指向引用的指针。“_ –

+0

我没有发明这个例子。这来自Autodesk公司的AutoCAD官方文档。 –

+0

@Bush你应该将这些信息添加到你的问题中...... –

3

这是文档中的拼写错误;他们的意思是AcDbSymbolTable::getName(char*& pName))

如果你这样读,段落的其余部分就非常合理:getName是一个函数,它通过一个声明为字符串引用的out参数来检索一个字符串(char *)。它甚至继续说,返回的“字符串”必须使用acutDelString释放。

如果您看看头文件中的实际声明,您很可能会发现声明为char*&的参数。