首页 > 后端开发 > C++ > 如何将 C 类成员函数作为回调传递给 API?

如何将 C 类成员函数作为回调传递给 API?

Barbara Streisand
发布: 2024-12-24 10:15:37
原创
150 人浏览过

How Can I Pass a C   Class Member Function as a Callback to an API?

将类成员函数作为回调传递

在尝试将类成员函数作为 API 的回调传递时,您可能会遇到编译错误由于缺少参数列表。要解决此问题,建议使用函数指针或捕获类实例的 lambda 表达式。

函数指针

错误消息建议使用 '&CLoggersInfra:: RedundancyManagerCallBack' 创建指向该成员的指针。这是因为类成员函数通常采用两个参数:第一个参数是指向类实例的指针,第二个参数是函数的参数。

void (CLoggersInfra::*ptr)(int); // Function pointer type
ptr = &CLoggersInfra::RedundancyManagerCallBack;
登录后复制

但是,函数指针方法需要您可以显式指定第一个参数,这可能不适用于所有场景。

Lambda 表达式(C 11 和稍后)

Lambda 表达式提供了一种更简洁灵活的方式来捕获类实例并创建回调函数:

auto lambda = [this](int arg) { this->RedundancyManagerCallBack(arg); };
登录后复制

这个 lambda 表达式捕获 'this' 指针并定义一个采用整数参数“arg”的匿名函数。然后,您可以将 lambda 作为回调传递:

m_cRedundencyManager->Init(lambda);
登录后复制

结论

通过使用函数指针或 lambda 表达式,您可以有效地将类成员函数作为回调传递,同时遵守 API 要求并避免编译错误。 Lambda 表达式在 C 11 及更高版本中特别方便,因为它们简化了类实例的捕获。

以上是如何将 C 类成员函数作为回调传递给 API?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板