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

发布于 2022-09-02 11:46:16 字数 516 浏览 12 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少跟Wǒ拽 2022-09-09 11:46:16

你可以把调用函数的那个函数以模板的形式实现:`

template <typename Func>
void do(Func funx, /* other args */) {
    funx();
    // do something
}

在具体调用时直接调用即可

do(fun1<Type>);
do(fun2<Type>);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文