[问题] 命令列输入给样板

楼主: Nestarneal (Nestarneal)   2016-01-13 15:13:53
开发平台(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):
能将该数字给样板用
作者: dorgonman (dorgonman)   2016-01-13 15:40:00
template是compile time展开,参数要喂只能用macro喂吧例如用cmake的话就cmake -G xxx -DTSIZE_X=3 -DTSIZE=8再把这define丢进template当成参数应该就行了
作者: a27417332 (等号卡比)   2016-01-13 16:30:00
有点好奇为什么执著用样板,这情况不太适合吧
作者: Caesar08 (Caesar)   2016-01-13 16:49:00
你可以再写一个程式,要求执行的时候编译你原本的程式
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-01-13 17:25:00
那如果程式跑一跑user要改行列数 就再compile一次我只是要买牛奶 结果整条牛都卖给我了 太帅了
楼主: Nestarneal (Nestarneal)   2016-01-13 17:32:00
>a27417332: 我使用 dlib library 在抽取图片的 HOG特征, 它把设定 cell size 跟 block size 这些参数
作者: Caesar08 (Caesar)   2016-01-13 17:33:00
我也不懂为什么他要用template,既然这样只好给他要的囉
楼主: Nestarneal (Nestarneal)   2016-01-13 17:33:00
的部分放在样板 @@ 然后因为我想测试不同参数的效果,所以才有这问题.dor大跟Cae大的方法我尝试看看, 谢谢.

Links booklink

Contact Us: admin [ a t ] ucptt.com