问题标签 [boost-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost::function 和 boost::bind 是如何工作的
我不喜欢魔术盒散布在我的代码中......这两个类究竟如何工作以允许基本上任何函数映射到函数对象,即使函数<>具有与传递给的那个完全不同的参数集boost::bind
它甚至可以使用不同的调用约定(即成员方法__thiscall
在 VC 下,但“普通”函数通常是__cdecl
或__stdcall
用于那些需要与 C 兼容的函数。
c++ - 在构造函数参数列表中构造 boost::function 对象时出现错误 C2228
下面的代码不能在 Visual C++ 2005 中编译。
如果我在 SomeClass 构造函数的参数周围加上括号,或者在参数列表之外构造 boost::function 对象,它编译得很好。
之前的代码有什么问题?
c++ - C++ 函子和零
首先是免责声明,我正在替换一堆使用 boost::function 和 boost::bind 的代码。但是,我正在转向不允许 rtti 的代码库。我想继续使用 boost 但不知道是否有办法绕过这个限制。
所以,我试图模仿它的一些功能,但要简化得多。我有一个回调类:
这使我可以使用零参数进行简单的回调:
我希望能够将我的回调对象分配为零作为默认参数,如下所示:
这在使用 boost::function 时有效,你可以这样做:
我想 boost 在这里做了一些魔术。我知道我可以将参数更改为指针而不是引用,但正如我所说,我正在替换很多代码,并希望最大限度地减少从 boost.js 更改的影响。
c++ - 帮助提升绑定/功能
我有这个必须匹配的函数签名
这是我到目前为止所拥有的:
但是,在lua_register(_luaState...
,它仍然在抱怨转换问题
错误 1 错误 C2664: 'lua_pushcclosure' : 无法将参数 2 从 'boost::function' 转换为 'lua_CFunction'
有谁知道如何解决这个问题?
c++ - boost::function free() 上的“损坏的双链表”
我将尝试在不提供太多源代码的情况下提出这个问题,因为所有相关位加起来就是一堆。涉及的关键(我认为?)对象是
boost::function mf1 用作最小化例程(o2scl::ool_mmin_spg)的回调函数,但我认为我遇到的问题不是特定于此。该代码通过调用 ool_mmin_spg.mmin() 函数运行,该函数使用 mf1 作为回调并且似乎运行没有错误。然后我收到这个可爱的信息
* 检测到 glibc * ./test: 损坏的双链表: 0x0000000001e9fb20 ***
其次是回溯和内存映射。回溯的相关行似乎是
#7 0x000000000041d32a in boost::detail::function::functor_manager, o2scl::ovector_const_subvector_tlate >, MSMTFormation>, unsigned long, o2scl::ovector_base_tlate const&, double&, dmect::MSMTModel, o2scl::ovector_const_subvector_tlate >&>, boost: :_bi::list5, o2scl::ovector_const_subvector_tlate >, MSMTFormation> >, boost::arg<1>, boost::arg<2>, boost::arg<3>, boost::arg<4> > > > ::manage (in_buffer=, out_buffer=warning: (内部错误: pc 0x41d270 在 psymtab 中读取,但不在 symtab 中。)
我推断从 boost::function 释放内存存在问题,但除此之外我迷路了。是否有任何关于尝试调试 glibc“损坏的双链表”错误的指示?我在谷歌上找到了一些参考资料,但似乎都解决了非常具体的问题。如果需要更详细的代码片段,请告诉我,感谢您的宝贵时间!
c++ - 从 boost::threaded 成员函数获取返回值?
我有一个像下面这样的工人阶级:
它旨在与 boost::thread 和 boost::bind 一起执行,例如:
我的问题是,如何获得 Worker::Do 的返回值?
提前致谢。
c++ - boost::function 运行时性能
我正在为动态加载的库实现一个独立于平台的包装器。当然,当我从库中加载函数时,我需要将它们存储为指针以备将来使用。我想过为此使用 boost::function 而不是普通的函数指针。当然,这会增加编译时间,但这不是我害怕的。相当:
调用存储函数时 boost::function 引入的开销是多少?有吗?它有多大?
我想我在不时调用此类函数时不会有太多开销,但是,经常调用的函数呢?(极端示例,glVertex
在加载的 GL 库上)。对性能有多大影响?
Source-diving boost 没有给出太多答案:>。
此外,如果它依赖于编译器,我主要对 GCC 和 MSVC 感兴趣。
c++ - boost::function 对象容器上的 STL 算法
我有以下使用 for 循环的代码,我想使用转换,或者至少使用 for_each,但我不知道如何。
稍后在代码中,我实际上想调用这个空函数对象的集合。我在这里也使用了 for 循环,似乎我应该能够以某种方式使用 for_each。
c++ - 使用 boost::bind 和 boost::function 作为回调的类成员函数
我正在设置一个成员函数作为我正在使用的 C 库的回调。C 库像这样设置回调:
我想使用 boost::bind (如果可能的话)来传递函数指针。我希望指向的函数是实例化类的成员,而不是静态成员。例如
这可以使用 boost::bind 和 boost::function 来完成吗?Per如何将类成员函数作为回调传递?(第三个答案)看来我可以声明以下内容(某处,或作为 typedef):
然后在 A(ctor)中的某个地方调用该类型的 boost::bind,并将其传递给 C-library 调用。
这是可能的,还是我不在基地?非常感谢。
c++ - 这个 boost::lambda 使用有什么问题?
为什么这个 boost::lambda 表达式不起作用?
我得到了这些编译错误,这可能无济于事,因为它们真的很神秘。