c++11 - C++ 如何以 符合同一形式模板的函数 作为参数?

【字号: 作者:雯心浏览:34日期:2023-05-13

问题描述

标题有点混乱。。我也不知道怎么描述好了,希望你们能看懂。。

例如现在有一组原型为同一形式的函数模板,把它们叫做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>);

相关文章: