→ pttworld: 「指」標要指得到東西,什麼被指到。 09/30 18:24
這邊的指標指到 NULL 啊
※ 編輯: seanooxox (220.135.48.199), 09/30/2016 18:33:47
推 shadow0326: int* const & n = b; 09/30 18:48
→ shadow0326: 就是const修飾到什麼的問題 09/30 18:48
→ pttworld: const int *b = 0; 09/30 19:06
→ seanooxox: 0 在這邊就是NULL的意思啊,而且就算換成其他東西也會 09/30 20:17
→ seanooxox: 有一樣的錯誤 09/30 20:17
→ pttworld: 可以嘗試全篇翻英丟上,語法解法已給。問題本身不明確。 09/30 20:36
→ seanooxox: 先感謝您的回覆,可能是我表達的不清楚。那我換個方式 09/30 20:57
→ seanooxox: 問問題好了,在我程式碼中紅色字的那一行,如果拿掉con 09/30 20:57
→ seanooxox: st的修飾,就會變得可以compile,我想知道這個跟rvalue 09/30 20:57
→ seanooxox: 有什麼關聯 09/30 20:57
→ pttworld: lr以assignment hand side判定。 09/30 21:46
→ pttworld: 只是編譯器認為指定失敗,不能,不過而已。 09/30 21:48
→ klsdf: 就我的理解是 (const int) * & 你用一個型態指向const int 09/30 22:27
→ klsdf: 的指標去ref一個int *本來就會跟你說型態錯誤 09/30 22:28
→ klsdf: 你用(const int) (* const) & 可以過是因為你的pointer是 09/30 22:29
→ klsdf: const不可更改 ref的語意有被推導出來 等其他強者解釋 QQ 09/30 22:35
→ klsdf: 就是const int *&是lvalue ref 他應該是a等效為b 09/30 22:37
→ klsdf: 但a是const int, 你*b改了值 *a也會跟著改就語意矛盾 09/30 22:38
推 ralts: b 會先 implicit 轉型成 const int* 的 rvalue, 而錯誤在 r 10/01 03:05
→ ralts: value 只能有 const reference. 10/01 03:05
→ g0010726: 一開始的code紅色行給你編譯過的話 你就可以做: 10/01 08:20
→ g0010726: const int cint; n = &cint; 10/01 08:21
→ g0010726: *b = 100; //改到cint惹 爆炸 10/01 08:22
→ g0010726: 也就是 想在type的某level加上const,得要一路往上每個 10/01 08:27
→ g0010726: level加const。 除了top level 可以不用管 10/01 08:27