如何将 boost bind 与成员函数一起使用

2023-11-23

以下代码导致 cl.exe 崩溃(MS VS2005)。
我正在尝试使用 boost bind 创建一个函数来调用 myclass 的方法:

#include "stdafx.h"
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <functional>

class myclass {
public:
    void fun1()       { printf("fun1()\n");      }
    void fun2(int i)  { printf("fun2(%d)\n", i); }

    void testit() {
        boost::function<void ()>    f1( boost::bind( &myclass::fun1, this ) );
        boost::function<void (int)> f2( boost::bind( &myclass::fun2, this ) ); //fails

        f1();
        f2(111);
    }
};

int main(int argc, char* argv[]) {
    myclass mc;
    mc.testit();
    return 0;
}

我究竟做错了什么?


请改用以下内容:

boost::function<void (int)> f2( boost::bind( &myclass::fun2, this, _1 ) );

这使用占位符将传递给函数对象的第一个参数转发给函数 - 你必须告诉升压绑定如何处理参数。对于您的表达式,它会尝试将其解释为不带参数的成员函数。
参见例如here or here对于常见的使用模式。

请注意,VC8s cl.exe 经常崩溃升压绑定误用 - 如果有疑问,请使用 gcc 的测试用例,您可能会得到很好的提示,例如模板参数Bind- 如果您阅读输出,则内部会被实例化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 boost bind 与成员函数一起使用 的相关文章

  • 如何在MVVM中管理多个窗口

    我知道有几个与此类似的问题 但我还没有找到明确的答案 我正在尝试深入研究 MVVM 并尽可能保持纯粹 但不确定如何在坚持模式的同时启动 关闭窗口 我最初的想法是向 ViewModel 发送数据绑定命令 触发代码来启动一个新视图 然后通过 X
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46

随机推荐

  • 使用虚拟继承的地址未对齐

    以下明显有效的代码使用 UndefinedBehaviorSanitizer 清理程序产生未对齐的地址运行时错误 include
  • TSQL:FOR XML PATH('') 无法分组

    我正在尝试使用特定列对列值进行分组FOR XML PATH 在 TSQL 中 这是两种情况的结果 请注意 没有 XML 代码 即 SELECT FROM xml 与 XML 代码相同 Class Animals Asteroidea Sta
  • 如何获取用户的交互式输入并在输入时能够使用箭头键?

    当我执行 raw input 并输入值时 我无法使用箭头键来更改内容 有什么方法可以做到这一点吗 感谢 readline 模块有助于行编辑功能 如何使用readline模块 只需导入 readline 模块即可 尝试加载 readline
  • 如何在QScrollArea中隐藏滚动条?

    如何隐藏滚动条QScrollArea 目前我使用的是hide 返回的滚动条上的方法QScrollArea horizontalScrollBar and QScrollArea verticalScrollBar 但为滚动条保留的空间仍然存
  • 错误 MSB3147:找不到所需的文件“setup.bin”发布到本地失败

    在网上搜索并讨论这个问题之后在这里聊天 我终于对一个旧错误提出了一个新问题 我在 Windows 10 上使用 Visual Studio Enterprise 2015 有关此问题的问题和答案来自 2011 年MSBuild 错误 MSB
  • Spark 多类分类示例

    你们知道在哪里可以找到 Spark 中多类分类的示例吗 我花了很多时间在书籍和网络上搜索 到目前为止我只知道根据文档的最新版本这是可能的 ML Spark 2 0 推荐使用 我们将使用与下面 MLlib 中相同的数据 有两个基本选项 如果E
  • 将 Java 日期字符串转换为 javascript 日期 [重复]

    这个问题在这里已经有答案了 当我通过 JSON 从 Java 向 Javascript 发送日期时 它会发送如下内容 var ds 11 07 47 13 01 2011 JavaScript 无法将此字符串解析为日期 var d new
  • 如何在 django ORM 的 From 子句中编写子查询

    我想使用 django orm 编写这个查询 SELECT depname empno salary enroll date FROM SELECT depname empno salary enroll date rank OVER PA
  • 如何在tomcat服务器上部署应用程序

    我想将 myapp 部署在 tomcat 服务器中 我知道一种方法是从 webapps 中删除 Root 文件夹并将我的 app war 重命名为 ROOT WAR 但我不想这样做 我想像当用户以 www xxx com 访问我的应用程序时
  • php soap 获取 http 标头时出错

    我正在编写一个通过 SOAP 连接处理大量数据的 PHP 脚本 如果没有遇到任何错误 脚本的总运行时间预计需要几天 我遇到的问题是脚本将运行一段时间 从一小时到一天不等 然后 SOAP 连接将因错误而终止 error fetching ht
  • 如何发现内容被截断?

    我正在尝试构建一个博客应用程序 问题是当我在模板中使用标签 truncatewords html 来截断长度超过指定字数的帖子时 我需要通过一些标题链接到完整的帖子 例如 阅读更多 截断后 所以我应该知道帖子是否被截断 P S 这是解决问题
  • 我应该如何处理无法通过lines()读取的Perl 6 $*ARGFILES?

    我正在玩lines它从您在命令行上指定的文件中读取行 for lines put 如果它无法读取它抛出的文件名之一X AdHoc 有一天也许它会有更好的异常类型 这样我们就可以用 path方法 好吧 所以抓住这一点 try CATCH de
  • WWW 和非 www 站点

    我有一个域说http www testexample com 当我登录到http www testexample com并回到http testexample com在浏览器中 不显示登录的用户信息 我知道上述两者的处理方式不同 因此不会保
  • 如何在SWT表中始终显示垂直滚动条?

    即使表是空的 是否也可以在 SWT 表中始终显示垂直滚动条 通过始终显示 可能禁用的 垂直滚动条 可以避免当列使用时最后一列被部分隐藏ColumnWeightData用于布局 我尝试用以下命令初始化表SWT V SCROLL或使用table
  • EF Core / DbContext > 将自定义类型映射为主键

    使用 Fluent api 如何将自定义类型映射为 DbContext 类的 OnModelCreating 方法中的主键 我正在尝试使用 EF Core 为以下实体构建模型 public class Account public Acco
  • Linux 命令行调用没有从 os.system 返回它应该返回的内容?

    我需要对 linux 进行一些命令行调用并从中获取返回 但是按如下方式执行只是返回0当它应该返回时间值时 例如00 08 19 我正在常规命令行中测试完全相同的调用 它返回时间值00 08 19所以我对我做错了什么感到困惑 因为我认为这就是
  • BufferQueue已被废弃:用TextureView播放视频时

    每次我暂停我的活动 实际上是片段 以转到另一个应用程序时 在使用 onResume 返回时 我尝试恢复视频播放 但它不播放 我得到一个空白屏幕 经过调查 我在 Logcat 中看到以下内容 E BufferQueueProducer unn
  • Clang 与 .so 文件链接

    我不断得到 ld library not found for lchaiscript stdlib 5 3 1 so clang error linker command failed with exit code 1 use v to s
  • Artisan migrate 找不到驱动程序

    我正在尝试安装 Laravel 我已经安装了Xampp 但是当我尝试使用设置我的数据库时php artisan migrate我收到错误 Illuminate Database QueryException 找不到驱动程序 SQL sele
  • 如何将 boost bind 与成员函数一起使用

    以下代码导致 cl exe 崩溃 MS VS2005 我正在尝试使用 boost bind 创建一个函数来调用 myclass 的方法 include stdafx h include