1
我有一個像模板函數指針重載
template<typename T> T ABS(const T& DiIN){
return (0 > DiIN) ? T(DiIN * (-1)) : T((DiIN));
}
template<typename T> T ADD(const T DiIN1, const T DiIN2) {
return DiIN1 + DiIN2;
}
我需要調用該函數ABS和/或使用一個單一的函數指針添加模板功能。 目前我使用了兩個不同的函數指針名稱,但是當我使用不同的參數長度包含更多的模板函數時,發現它變得越來越複雜。
我當前的實現是像
template<typename T>
struct test {
std::string funcName;
T(funcptr1 *)(T);
T(funcptr2 *)(T, T);
};
test<int> ltest[] = { {"ABS", ABS, NULL}, {"ADD", NULL, ADD} };
有沒有辦法來 1)使用單一的函數指針 2)擺脫初始化test<int>
和使用test<T>
,這樣我可以在使用任何變量類型運行?
我要尋找一個簡單的初始化像
template<> //template<typename T>
test<T> ltest[] = = { {"ABS", ABS}, {"ADD", ADD}, ..... };
@R Sahu:我還需要使用funcptr1來調用ABS和funcptr2來調用ADD?有沒有一種方法來實現相同的使用可變參數模板? – kar
@ user2896993,你可以這樣做,但它不會直截了當。我好奇。有沒有一個真正的問題,你試圖解決,或者這是一個知識分子的好奇心? –
@R Sahu:我需要一個解決方案。大約有700多個這樣的小模板函數具有不同的數據類型和參數長度。我的代碼在運行時變得越來越耗時,如果我使用if else或switch case來確定我需要調用哪個函數指針(函數)。 – kar