→ linotwo:int test(int x1, int x2, int x3); 就好了 03/20 21:42
→ linotwo:為何要用 template? 03/20 21:43
因為這樣會變成重載
如果使用者不指定的話不會自動推導參數,而會直接使用 non-template test()
int test( int x1, int x2, int x3) { return 0; }
比如說
test<3>(1, 2, 3) 回傳 3
test(1, 2, 3) 就會回傳 0 了
其實我有想到很多的替代方案
我只是很好奇 VC++ 6.0 能不能達到這樣的功能
謝謝喔~
※ 編輯: applecool 來自: 123.110.247.44 (03/20 21:51)
→ linotwo:那用 template 對你來說有什麼好處? 03/20 21:51
以我實際應用的例子有很大好處,但是我簡化成這問題
以這個簡化過的範例來說確實沒有任何好處 ^______^
※ 編輯: applecool 來自: 123.110.247.44 (03/20 21:54)
→ linotwo:解法不少。如果知道更詳細的考量的話問題會好回答許多。 03/20 22:29
感謝
我也想到很多沒有損失的替代方案
只是想知道是否有可能達到這樣的目的 (vc6)
※ 編輯: applecool 來自: 123.110.247.44 (03/20 22:38)
→ leiyan:直接寫例外處理呢? 03/20 22:42
→ applecool:??? 03/20 22:43
→ coolcomm:原po想要的應該是編譯時期的檢查吧 03/21 00:01
→ loveme00835:template default arugement 03/21 00:25
→ loveme00835:xD 傳幾個引數在呼叫的時候就知道了, 用一個 ... 還要 03/21 00:32
→ loveme00835:另外給它個數... 03/21 00:33
→ loveme00835:你一直給呼叫的時候給三個引數的例子, 那麼 03/21 00:52
→ loveme00835:test<3>( int x1, int x2, int x3, int x4 ) 03/21 00:53
→ loveme00835:test<3>( int x1, int x2 ) 之類的 code 怎麼辦呢? 03/21 00:53
→ loveme00835:你的切入點一直都是從 variadic function 來做, 但是 03/21 00:54
→ loveme00835:有說到非用這個的理由 03/21 00:55
→ loveme00835:^都沒 03/21 00:55
→ loveme00835:也可以用 overload 達到類似的效果, 如果 test 本身 03/21 02:21
→ loveme00835:是 functor 的話... 03/21 02:22
→ applecool:謝謝謝謝~~~學到很多^^ 03/22 00:00