2013-07-05 101 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*&的參數。