看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Ubuntu 14.04 問題(Question): 我目前遇到一個問題, 程式碼簡述如下: template<unsigned long T1, unsigned long T2> class Something { // ...... }; 所以我在 main() 能夠這樣寫 int main(int argc, char* argv[]) { // ... Something<3, 8> object_A; Something<4, 9> object_B; // ... } 我是希望像上面 3, 8 這兩個數字能夠從命令列輸入, 而不是寫死在程式內 我知道編譯器在編譯階段就必須要知道樣板內那兩個數字是多少才能產生物件, 而沒有辦法採用從命令列輸入這樣動態的方式 我目前想到的唯一解法就是預先創造各種數字組合的物件矩陣, 再判斷命令列輸入的數字決定使用那個物件, 但這樣會需要預先創造很多物件, 而實際上有用到的只會是其中一小部分, 非常浪費空間 所以想請教有沒有其他方法能夠讓樣板內的數字由命令列來決定呢? 謝謝 (對樣本其實我沒有很熟, 如果上面有講錯的地方麻煩指點一下, 謝謝) 餵入的資料(Input): 命令列輸入的數字 預期的正確結果(Expected Output): 能將該數字給樣板用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.81.120.166 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1452669236.A.D15.html ※ 編輯: Nestarneal (111.81.120.166), 01/13/2016 15:15:51
dorgonman: template是compile time展開,參數要餵只能用macro餵吧 01/13 15:40
dorgonman: 例如用cmake的話就cmake -G xxx -DTSIZE_X=3 -DTSIZE=8 01/13 15:43
dorgonman: 再把這define丟進template當成參數應該就行了 01/13 15:44
a27417332: 有點好奇為什麼執著用樣板,這情況不太適合吧 01/13 16:30
Caesar08: 你可以再寫一個程式,要求執行的時候編譯你原本的程式 01/13 16:49
MOONRAKER: 那如果程式跑一跑user要改行列數 就再compile一次 01/13 17:25
MOONRAKER: 我只是要買牛奶 結果整條牛都賣給我了 太帥了 01/13 17:26
Nestarneal: >a27417332: 我使用 dlib library 在抽取圖片的 HOG 01/13 17:32
Nestarneal: 特徵, 它把設定 cell size 跟 block size 這些參數 01/13 17:33
Caesar08: 我也不懂為什麼他要用template,既然這樣只好給他要的囉 01/13 17:33
Nestarneal: 的部分放在樣板 @@ 然後因爲我想測試不同參數的效果, 01/13 17:33
Nestarneal: 所以才有這問題. 01/13 17:33
Nestarneal: dor大跟Cae大的方法我嘗試看看, 謝謝. 01/13 17:34