std::bind 和 boost::bind 多态性之间的区别

2024-04-19

我有一个派生类,从中绑定了一个我没有在此类中重写的虚函数,因此我希望调用父类中的一个。
它与 boost (1.55) 配合得很好,但如果我从 C++11 切换到 std::bind,它会拒绝编译

错误 C2100:非法间接寻址 1> 功能(1152):参见函数模板实例化'_Rx std::_Pmf_wrap<_pmf_t>::operator ()(_Wrapper &) const'正在编译 1> 与 1> [ 1> _Rx=布尔值, 1> _Pmf_t=bool (__thiscall 基::* )(void), 1> _Farg0=基础, 1> _V0_t=std::_Nil, 1> _V1_t=std::_Nil, 1> _V2_t=std::_Nil, 1> _V3_t=std::_Nil, 1> _V4_t=std::_Nil, 1> _V5_t=std::_Nil, 1> =std::_Nil, 1> _Wrapper=派生 1>]

这是最小代码

class Runnable { virtual bool Run() =0;};
class Base : public Runnable { bool Run() {/*do stuff*/ return true;}};
class Derived : public Base {};

Derived d;
std::function<bool()> f = std::bind(&Derived::Run,std::ref(d)); //Do not compile
std::function<bool()> f = boost::bind(&Derived::Run,boost::ref(d)); //compile 

这不是一个主要问题,因为我可以坚持使用 boost,但我真的很想知道两者之间有什么区别。

我在这里检查了几个问题,但我不认为它与this https://stackoverflow.com/questions/10555566/is-there-any-difference-between-c11-stdbind-and-boostbind。 也检查了 stroustrup 的网站here http://www.stroustrup.com/C++11FAQ.html#std-function,但我没有看到任何可以解释这种行为的东西。
我在这里缺少什么?

PS:我使用VS2012 Update 4,如果这可以帮助


Visual Studio 2012 有很多与以下相关的错误std::function and std::bind。这是其中之一;该代码可在 Visual Studio 2010 和 Visual Studio 2013 中运行。

最好的选择是单独使用 Boost.Function 和 Boost.Bind。

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

std::bind 和 boost::bind 多态性之间的区别 的相关文章

  • 通过增加索引之和来生成排序组合的有效方法

    对于启发式算法 我需要一个接一个地评估特定集合的组合 直到达到停止标准 由于它们很多 目前我正在使用以下内存高效迭代器块生成它们 受到 python 的启发 itertools combinations http docs python o
  • clang 格式换行符在错误的位置

    给出以下代码行 get abc manager get platform status abc platform status sw update status fill update status actions allowed stat
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • C# 正则表达式用于查找 中具有特定结尾的链接

    我需要一个正则表达式模式来查找字符串 带有 HTML 代码 中的链接 以获取文件结尾如 gif 或 png 的链接 示例字符串 a href site com folder picture png target blank picture
  • 选择列表逻辑应位于 ASP.NET MVC、视图、模型或控制器中的什么位置?

    我觉得我的问题与这个问题很接近 但我想对这样的代码应该放在哪里进行更一般的讨论 Asp Net MVC SelectList 重构问题 https stackoverflow com questions 2149855 asp net mv
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • C# 中的常量和只读? [复制]

    这个问题在这里已经有答案了 可能的重复 const 和 readonly 之间有什么区别 https stackoverflow com questions 55984 what is the difference between cons
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • ASP.NET JQuery AJAX POST 返回数据,但在 401 响应内

    我的应用程序中有一个网页 需要调用我设置的 Web 服务来返回对象列表 这个调用是这样设置的 document ready function var response ajax type POST contentType applicati
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • Android Studio 在运行测试时不使用 Gradle jvmArgs?

    我有一个带有 JUnit 测试的 Android 库 只有在使用 noverify标志传递给 JVM 我相信是因为this https stackoverflow com a 15122960 1910286 如果从命令行运行测试就会通过
  • 当我有表面声明时,如何为 sm_1X 和 sm_2X 编译 CUDA 程序

    我正在编写一个使用表面 重新采样并写入纹理 来提高性能的库 surface
  • 每行熊猫都会在下周日返回

    在 Pandas for Python 中 我有一个数据集 其中有一列日期时间 我需要创建一个新列 其中每行包含下周日的日期 我尝试过各种方法尝试使用 iterrows 然后计算出一周中的某一天 并添加一天直到该天为 7 但它没有起作用 我
  • GNUPLOT 绘制 5 天的财务周

    我已经寻找了一段时间 以找出如何从财务图中删除一周中的几天 但没有成功 我需要该图仅包含一周中的几天并完全忽略周末 以便财务图表中没有 2 天的差距 我有 CSV 格式的开盘 低 收盘 高数据 并且缺少周末数据 它绘制得很好 但我找不到如何
  • CoroutineScope.async 上的异常传播如何工作?

    我看到多个消息来源声称 async 块内发生的异常不会传递到任何地方 仅存储在Deferred实例 声称该异常仍然是 隐藏的 并且仅在人们调用时影响外部事物await 这通常被描述为之间的主要区别之一launch and async 这是一
  • 创建Flutter项目时出现权限错误

    我是 Flutter 新手 安装后 当我尝试创建项目时出现此错误 hello world flutter create ios language swift android language kotlin Failed to open or
  • 如何在 Javafx 中将文本插入到形状中?

    我使用 JavaFX 创建了一个简单的矩形对象 我希望能够将文本对象放入该矩形内 并使其自动在矩形内保持对齐 我必须绘制矩形的代码是 public static Scene createScene Group root new Group
  • 科尔多瓦应用程序中的输入类型=“文件”替代方案

    我正在开发一个科尔多瓦 Android 应用程序 但是input type file 在那里不起作用 我应该使用哪种替代方法才能在加载文件之前看到提示窗口 None
  • 如何在 C# 中保存电子邮件附件 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何使用 C 从我的邮件 例如 gm
  • React-router-redux 在链接上单击两次即可更新位置状态

    我的应用程序出现问题 无法在任何地方找到解决方案 我用react router redux and syncHistoryWithStore 当我单击导航以使用链接更改路线时 新路线会加载 浏览器中的 URL 会更新 但是location除
  • 有没有更好的方法将多值数据显示为列?

    我的笔记数据库中有 4 个审核字段 它们是多值的 当表单上的某些内容发生更改时 它们都会获得一个新条目 我有一个审核表单 以柱状方式显示这些字段 几乎就像一个视图 这是列的代码
  • 返回响应后如何记录 POST 方法的返回值?

    我正在开发我的第一个 REST API 所以如果我错过了一些基本的东西 请提前道歉 我有一个函数 它从另一台服务器获取 JSON 请求 对其进行处理 根据数据进行预测 然后返回另一个带有结果的 JSON 我想在服务器的本地磁盘上保留对此端点
  • 同时使用 2 个 GPU 调用 cudaMalloc 时性能较差

    我有一个应用程序 可以在用户系统上的 GPU 之间分配处理负载 基本上 每个 GPU 都有一个 CPU 线程来启动一个GPU处理间隔当由主应用程序线程定期触发时 考虑以下图像 使用 NVIDIA 的 CUDA 分析器工具生成 作为示例GPU
  • NSKeyValueObservation:无法从对象中删除关键路径的观察者,因为它未注册为观察者

    我的应用程序中出现随机崩溃 我无法在我拥有的设备上重现 但有例外 无法从 AVPlayerLayer 0xaddress 中删除关键路径 readyForDisplay 的观察者 Foundation NSKeyValueObservati
  • 导入Matplotlib而不显示

    我正在尝试在我的 Linux 服务器上运行 python 脚本并制作并保存一些绘图 我已经安装了ipython and pylab and matplotlib但当我运行我的脚本时 我收到此错误 Traceback most recent
  • 引用 wmp.dll (\windows\system32\wmp.dll)

    我可以在商业应用程序中使用对 wmpLib ddl wmp dll windows system32 wmp dll 的引用吗 我在用Visual Studio 2008 Express http en wikipedia org wiki
  • 具有可选命令行模式的 Cocoa 应用程序

    我即将从头开始一个新的 Cocoa 项目 我已经给出的要求之一是能够从同一个可执行文件中选择 Cocoa GUI 或命令行模式 未来可能会增加脚本能力 但这不是现在的问题 在 Cocoa 中解决这个问题的最佳策略是什么 特别是如果我想维护某
  • Struts2 jQuery 插件 java.lang.ClassNotFoundException: org.apache.struts2.views.TagLibrary

    该问题涉及到Struts v2 3 16 and Struts2 jQuery 插件 v3 6 1 Struts 项目似乎不支持第三方插件 例如 Struts2 jQuery 插件 如何解决以上版本不兼容的问题 这是启动时抛出的异常 13
  • 如何在移动设备上使用Unity3d实现多点触控?

    I use OnMouseDown 可以处理按压 但不可能实现多点触控 该程序包括当您点击时增加然后减少的对象 如果轻轻一按 一切都会正常 但是 当您尝试同时单击多个对象时 它不起作用 我正在尝试解决该问题 但它不起作用 对象无法缩放并且多
  • std::bind 和 boost::bind 多态性之间的区别

    我有一个派生类 从中绑定了一个我没有在此类中重写的虚函数 因此我希望调用父类中的一个 它与 boost 1 55 配合得很好 但如果我从 C 11 切换到 std bind 它会拒绝编译 错误 C2100 非法间接寻址 1 gt 功能 11