问题描述
标题有点混乱。。我也不知道怎么描述好了,希望你们能看懂。。
例如现在有一组原型为同一形式的函数模板,把它们叫做funx()它们都是T funx(T arg)的形式,但是函数体不同
// these called funx()template <class T>T fun1(T arg){ // do something }template <class T>T fun2(T arg){ // do something }
再设计一个函数,函数实现需要调用 符合以上形式模板 的函数
void do( funx ,/* some arguments */){ funx(); // do something}
因为是函数模板,无法直接传递funa或者funb的函数指针 作为do()的参数
如何设计do()或者修改funx()来符合要求?
问题解答
回答1:你可以把调用函数的那个函数以模板的形式实现:`
template <typename Func>void do(Func funx, /* other args */) { funx(); // do something}
在具体调用时直接调用即可
do(fun1<Type>);do(fun2<Type>);