作者ko27tye (好滋好滋)
看板C_and_CPP
标题[问题] 用template取得array长度
时间Sat Jun 26 22:38:47 2021
网上找到的做法是用reference搭配template来取得
https://ideone.com/hSXrOZ
我试着改用pointer做做看,但无法通过编译
不如说为什麽reference就能通过编译?
查到一篇类似的问题
https://tinyurl.com/3wvr2mze
难道reference里面有存阵列的型别和长度,
而pointer只是单纯放记忆体位置吗?
还麻烦各位高手解惑,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.229.32.19 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1624718333.A.2F7.html
1F:推 bhbbbbb: 可以参考置底第12诫 06/27 00:01
我想问的是,ref多了pointer什麽东西才能这麽做
12诫没有说明
※ 编辑: ko27tye (36.229.32.19 台湾), 06/27/2021 00:21:28
2F:推 KaryuuIssen: 错误的版本要传入阵列位址才行 这里不能靠阵列退化 06/27 00:28
3F:→ KaryuuIssen: 成指标 因为签名不合 06/27 00:28
感谢!重点是signature不符合 fail_version(&arr) 这样call就可以了
※ 编辑: ko27tye (36.229.32.19 台湾), 06/27/2021 00:43:24
4F:推 LPH66: 顺便提一下, reference 确实在某种意味上「有存」型别长度 06/27 03:16
5F:→ LPH66: 但它不是存在程式执行的记忆体里, 而是编译器会记着它 06/27 03:17
6F:→ LPH66: 这也是为什麽型别签名会被编译器检查出不合的部份原因 06/27 03:17
7F:→ ko27tye: 学到了,感谢分享! 06/27 07:02