【发布时间】:2016-01-06 16:06:28
【问题描述】:
我有一个像
这样的模板函数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 和/或 ADD。 目前我使用两个不同的函数指针名称,但是当我包含更多具有不同参数长度的模板函数时,发现它变得越来越复杂。
我目前的实现是这样的
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}, ..... };
【问题讨论】:
标签: c++ templates pointers function-pointers