看板 C_and_CPP 關於我們 聯絡資訊
#include<...> ... struct sysop { char.. int .. }; const sysop & clone(sysop & sys); //prototype int main() { sysop test={ 初始化...}; ...... sysop & jolly = clone(test); //為啥這一行 我的compiler不給過 //我是用dev - c++的 請問這是出了什麼問題..... //覺的 好像應該是沒錯才對啊 , 請各位高手 解惑一下 謝謝 } const sysop & clone(sysop & sys) { sysop * ptt = new sysop; *ptt = sys; return *ptt; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.171.58.43
sunneo:既然是clone,得到的應該是可寫入的實體吧 01/19 14:47
sunneo:不過你犯的是沒有看compilation-error的訊息 01/19 14:47
47 C:\Documents and Settings\..\桌面\main.cpp invalid initialization of reference of type 'sysop&' from expression of type 'const sysop' 好像是說 錯誤的初始化 @_@? 可是我看書 他說這樣的方法 可行,但是我打上去,他就error了.... 所以我才想問一下 為什麼會錯誤...謝謝 ※ 編輯: pharaoh7 來自: 218.171.58.43 (01/19 14:53)
james732:同意樓上 其實錯誤訊息應該有告訴你答案了 01/19 14:55
james732:sysop & jolly <== 那個 & 是多餘的 01/19 14:56
pharaoh7:傳回型態 不是const reference 為啥這樣會錯誤啊>< 01/19 15:05
pharaoh7:不能把jolly取 別名嗎... 01/19 15:06
sunneo:ref的初始化不能是const ref 01/19 15:06
sunneo:因為ref是可寫的, const ref是唯獨的 01/19 15:07
sunneo: ^讀 01/19 15:07
sunneo:但如果main的sysop&宣告為sysop 他就是得到一份複製 01/19 15:08
sunneo:但會使得原先的const ref& 發生mem leak 01/19 15:08
sunneo:所以你可以將main的改為const sysop&,或者將clone改sysop& 01/19 15:09
pharaoh7:非常謝謝sunneo大的解說,看了您的解說 我懂了^^ 謝謝 01/19 15:13