首页 > 解决方案 > 如何在 C++ 中使用模板函子实现回调

问题描述

您能否解释一下如何在 C++ 中使用模板函子实现回调函数。

我已阅读 Rich Hickey 关于此主题的以下文章,但不明白如何在我的应用程序中使用它。

http://www.tutok.sk/fastgl/callback.html

我对函子和模板有基本的了解,并且已经在我的应用程序中使用过它。

标签: c++callback

解决方案


类似于以下内容:

void hello()
{
    printf("hello\n");
}

template <typename CB>
void func_with_cb(CB cb, int i)
{
    cb(i);
}

int main()
{
    func_with_cb([](int i)
    {
        printf("%d\n", i);
        hello();
    }, 5);
}

我们在函数中使用模板来允许任意回调,而无需事先知道类型名(编译器仍会检查一切是否正常),然后使用 lambda 传递回调。hello我们还可以在匿名 lambda 函数中调用命名函数(例如)


推荐阅读