C++ 如何将成员函数传递给函子参数?

2023-12-02

我正在使用 TRI DDS - 这是我尝试调用的函数的原型:

template<typename T , typename Functor >
dds::sub::cond::ReadCondition::ReadCondition  (
  const dds::sub::DataReader< T > &  reader,  
  const dds::sub::status::DataState &  status,  
  const Functor &  handler  
)

所以我有一个看起来有点像这样的类(省略了一些不相关的内容):

MyClass test{
public:
    test(){... mp_reader = ...}; // not complete

    start_reader()
    {
        dds::sub::cond::ReadCondition rc(*mp_reader,
                                         dds::sub::status::DataState::any(),
                                         do_stuff());  // This does not work
    }

    void do_stuff() {...}
private:
    dds::sub::DataReader* mp_reader;

}

所以我只是尝试传递函数 do_stuff() ..我知道这行不通,但我不确定要在这里放什么来代替const & functor范围。我可以传入成员函数吗? - 如何指定类的实例?

我尝试将 lambda 放在那里并且它起作用了 - 但我无法访问 lambda 中的 mp_reader 因为它不在 lambda 的范围内。但无论如何,我真的不想使用 lambda,我真的想使用一个函数(因此,最终我可能能够传入一个外部函数)。

请参见here用于 RTI DDS 功能。这是它所说的关于functor type:

"Any type whose instances that can be called with a no-argument function call (i.e. f(), if f is an instance of Functor). Examples are functions, types that override the operator(), and lambdas <<C++11>>. The return type has to be void"


您可以将 lambda 函数与捕获结合使用。

dds::sub::cond::ReadCondition rc(*mp_reader,
                                 dds::sub::status::DataState::any(),
                                 [this](){ this->do_stuff(); });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 如何将成员函数传递给函子参数? 的相关文章

  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当模板类不包含可用的成员函数时,如何在编译时验证模板参数?

    我有以下模板struct template
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 使用 CSharpCodeProvider 类编译 C# 7.3 的 C# 编译器版本是什么?

    我想使用 Microsoft CSharp CSharpCodeProvider 类来编译 C 7 3 代码 编译器版本在 IDictionary 中指定 在创建新的 CSharpCodeProvider 时将其作为输入 例如 Compil
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder

随机推荐

  • 管理对象间关系

    如何为对象的特殊情况编写代码 例如 假设我正在编写一个角色扮演游戏 有 N 5 个类 矩阵中有 N 2 个关系 可以确定角色 A 是否可以攻击 或对角色 B 使用能力 M 暂时忽略其他因素 我如何在 OOP 中对此进行编码 而不用到处放置特
  • 使用嵌套 json 时,排序在 ngTable 中不起作用

    我使用 ngTable 在 angularjs 中创建了一个应用程序 该应用程序工作正常 但排序不起作用 我的 json 结构是嵌套的 但值与表一起正确出现 谁能告诉我一些解决方案 我的代码如下所示 JSFiddle html div ta
  • Vb.net 解密 sha512 哈希

    嘿伙计们 我正在努力解密我的哈希值sha512加密 我正在寻找一种最终解密它的方法 顺便说一句 这就是我进行加密的方式 Dim uEncode As New UTF8Encoding Dim bytClearString As Byte u
  • 如何在 Matplotlib 的子图中单独绘制相同的图形? [复制]

    这个问题在这里已经有答案了 我正在用 Python 编写一个生成许多图表的程序 其中一些图表无论是独立的还是与其他图表相比都很有趣 生成这些图表的成本很高 就运行时间而言 而且我不想多次生成它们 有没有办法生成一次情节 并将其作为子情节的一
  • 使用也处理撇号的正则表达式匹配单词

    我必须将一行文本分成单词 并且对使用什么正则表达式感到困惑 我到处寻找匹配单词的正则表达式 并找到了与这篇文章类似的正则表达式 但希望它在 java 中 java 不处理常规字符串中的 正则表达式匹配单词和带有撇号的单词 我已经尝试了每个答
  • ggplot2 双轴

    这是一个扩展this问题 我目前使用的是最新版本ggplot2 v2 2 0 来自 CRAN 用于在其中创建绘图R 我正在利用 Axeman提供的解决方案here 我遇到的问题是 当我使用小平面时 有时其中一个 y 轴显示非常小的值 我想知
  • image_tag - 有没有办法让 alt attr 默认为空?

    如果图像丢失 我宁愿有一个空白的 alt 属性 而不是图像的文件名 无论如何谁想要这种默认行为 有没有办法进行系统配置 以便 image tag 在没有给出 alt 的情况下设置空白 alt attr 需要明确的是 我对 image tag
  • 当存在 UTF-8 字符时如何将输出定向到文件?

    我有一个 python 脚本 可以从 Twitter API 中获取一堆最近的推文并将它们转储到屏幕上 它工作得很好 但是当我尝试将输出定向到文件时 会发生一些奇怪的事情 并且 print 语句会导致异常 gt tweets py gt t
  • javascript如何在回调函数中获取this.variable

    在下面的javascript自定义类中 在回调中 为什么this obj什么都没有 而局部变量obj有我想要的东西 谢谢 function ClassTest director this obj test1 test1 function t
  • 在 data.table v1.8.10 与 v1.9.2 中对非常小的数字(例如 1e-28)和 0.0 进行分组

    我注意到 R 中的 data table 创建的频率表似乎无法区分非常小的数字和零 我可以改变这种行为还是这是一个错误 可重现的例子 gt library data table DT lt data table c 0 0000000000
  • Quartz PDF API 导致内存不足崩溃

    我在使用 iOS 版 Quartz PDF API 时遇到崩溃问题 目前我正在使用 SDK 4 0 GM Seed 进行编译并在我的 3 2 iPad 上运行 我尝试使用 3 2 SDK 得到相同的结果 我使用的所有代码均基于标准 Appl
  • 如何在linux bash脚本中使用“-”字符(破折号)声明变量名

    我写了简单的脚本如下 bin bash auth type SM Read only Yes SM write only No echo e SM Read only echo e SM Write only if SM Read only
  • Python 产生: OSError: [WinError 193] %1 不是有效的 Win32 应用程序

    在检查了其他相关线程后 我不得不打开这个线程 当尝试跑步时这个存储库我总是收到错误 Traceback most recent call last File C Users jjj evrpogmrl main py line 1 in
  • Hive group by 和 count(distinct) 中的减速器数量

    有人告诉我 count distinct 可能会导致数据倾斜 因为只使用了一个减速器 我使用一个包含 50 亿数据的表和 2 个查询进行了测试 Query A select count distinct columnA from table
  • 如何向maven测试传递参数

    我有一个测试套件在两个环境中运行 有时 我想在 localhost 8080 运行测试 有时在 localhost 8585 运行测试 詹金斯通过 mvn test 命令 如何通过参数传递端口 类似于 mvn test 8080 我在mav
  • 在 SQL 比较中比较 null

    我正在使用 VB6 创建前端 我的数据库是 Sybase 我使用 DSN 创建了一些小 exe 来填充网格中的报告 一切正常 但是 如果我使用下面的查询 我只能得到小时和已回答的数据 如果我在 SQL 查询中执行查询 完整的数据就会出现 我
  • 使用 JavaScript 获取值 GET 或 POST 变量?

    如何使用 JavaScript 获取页面加载时 get 或 post 变量的值 尽管您可以在服务器上处理请求时将其插入到文档中 但您无法使用 Javascript 获取 POST 变量的值
  • java 是否将字符串文字优化为LowerCase()?

    java 是否优化字符串文字的操作 例如 是否 literal toLowerCase 总是创建一个新的字符串实例 toLowerCase calls toLowerCase Locale getDefault 查看实现 您会发现原始的St
  • Raspberry pi 3 上的 Hyperledger Fabric

    我正在尝试在树莓派上部署超级账本结构 但它不起作用 我正在寻找一些教程 但我没有找到它 有人刚刚做过吗 上次我尝试在 RPi 上运行 Hyperledger Fabric 时 我准备了以下说明 在 SD 卡上安装最新的 RASPBIAN 您
  • C++ 如何将成员函数传递给函子参数?

    我正在使用 TRI DDS 这是我尝试调用的函数的原型 template