[問題] 在 template 中 new

看板C_and_CPP作者 (この怨み,地獄へ流します)時間15年前 (2009/07/13 10:45), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
各位好,我想要在 template 中做 new 的動作。 不過在出 function 之後, pointer 的位置就會消失了, 想請教一下為什麼?那要怎麼改才會正確呢?謝謝。 void main () { int *piTemp = NULL; createBuffer(piTemp, 10); // do something.. delete [] piTemp; } template <class Type> bool createBuffer(Type *pType, int iSize) { try { // 先 delete 原有的 Buffer if (pType != NULL) { delete [] pType; pType = NULL; } // 建立並檢查 Buffer pType = new Type[iSize]; if (pType == NULL) return false; // 清除內容 memset(pType, 0, sizeof(Type)*iSize); } catch (...) { // error } return true; } -- ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄Timyau -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.133.252.2

07/13 10:58, , 1F
與 template 無關,不信你拿掉 template 試試
07/13 10:58, 1F

07/13 10:59, , 2F
這是 pass by value/reference 的問題
07/13 10:59, 2F

07/13 11:05, , 3F
(汗)還真的是,我越寫程式越退步 Orz 也感謝一樓指教!
07/13 11:05, 3F

07/13 12:24, , 4F
改成Type *&pType 就可以了吧
07/13 12:24, 4F
文章代碼(AID): #1AMf-kcx (C_and_CPP)