问题标签 [boost-bind]
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::bind 和 boost::function 作为回调的类成员函数
我正在设置一个成员函数作为我正在使用的 C 库的回调。C 库像这样设置回调:
我想使用 boost::bind (如果可能的话)来传递函数指针。我希望指向的函数是实例化类的成员,而不是静态成员。例如
这可以使用 boost::bind 和 boost::function 来完成吗?Per如何将类成员函数作为回调传递?(第三个答案)看来我可以声明以下内容(某处,或作为 typedef):
然后在 A(ctor)中的某个地方调用该类型的 boost::bind,并将其传递给 C-library 调用。
这是可能的,还是我不在基地?非常感谢。
c++ - boost::bind 与空函数指针
如果嵌入在boost::bind
返回对象中的函数指针是NULL
// nullptr
,0
我需要采取行动而不是调用它。如何确定对象是否包含空函数指针?
附加物
- 我不相信我可以使用和比较
boost::function
s,因为boost::bind
返回对象在模板函数中与不同的调用签名一起使用。 - 简化示例:
解决方案
由于被调用者中函数的数量不变,我可以将绑定返回对象“强制转换”为 aboost::function
并调用.empty()
c++ - 通过 boost::bind 从向量中删除字符串
我正在尝试从向量中删除短字符串。
编译器吐出一个非常大的错误信息:
以下解决方案有效:
但我仍然很好奇我在第一个版本中做错了什么。谢谢!
c++ - 在 boost::bind 中区分具有相同名称的 const 和非常量方法
例如,当我使用boost::bind
声明为 const 和 non-const 的方法名称时,我遇到了模棱两可的错误
我怎么解决这个问题?
c++ - 绑定到成员变量
以下来自 boost bind 的示例对我不起作用:
error: assignment of read-only location 'boost::bind [with A1 = boost::arg<1>, M = int, T = A](&A::data, (<unnamed>::_1, boost::arg<1>())).boost::_bi::bind_t<R, F, L>::operator() [with A1 = A, R = const int&, F = boost::_mfi::dm<int, A>, L = boost::_bi::list1<boost::arg<1> >](((A&)(& a)))'
我做错什么了吗?编译器是g++ 4.4.0
c++ - 如何将 boost 绑定与成员函数一起使用
以下代码导致 cl.exe 崩溃 (MS VS2005)。
我正在尝试使用 boost bind 来创建一个调用 myclass 方法的函数:
我究竟做错了什么?
c++ - 如何为 boost::bind 强制模板函数重载?
我正在尝试std::find_if
通过boost::bind
与boost::contains
(来自 boost/algoritm/string 库)一起使用来创建谓词。以下代码段显示了我尝试实现此目的的两种方式。
使用 g++ 3.4.5 编译此代码时,我得到以下输出。
当我切换到boost::icontains
只有一个过载的情况下,一切正常。当有多个非模板函数重载时,我知道如何解决类似的情况。有人可以帮我正确地写这个吗?还是我应该编写自己的比较函数?
c++ - 使用带有指针向量的 for_each 和 boost::bind
我有一个指针向量。我想为每个元素调用一个函数,但该函数需要一个引用。有没有一种简单的方法来取消引用元素?
例子:
我可以创建一个带有指针的脏小包装器,但我认为必须有更好的方法?
c++ - 提高回调注册可读性的宏
我正在尝试编写一个宏来使 C++ 中回调的特定用法更容易。我所有的回调都是成员函数,并将this
作为第一个参数和第二个参数,其类型继承自一个公共基类。
通常的方法是:
我很想写:
请注意,它将始终在同一类中使用。
即使typeof
被认为是一种不好的做法,这听起来也可以很好地解决缺少__class__
宏来获取当前类名的问题。
以下代码有效:
但我不能在宏中使用此代码,它将作为register_callback
.
我试过了:
由于我不明白的原因,这不起作用。引用 GCC 文档:
typeof
可以在任何可以使用 typedef 名称的地方使用 -construct 。
我的编译器是 GCC 4.4,即使我更喜欢标准的东西,也可以接受特定于 GCC 的解决方案。
c++ - 如何在 C++ 中实现泛型回调
请原谅我在问这个基本问题时的无知,但我已经习惯使用 Python,而这种事情是微不足道的,以至于我完全忘记了如何在 C++ 中尝试这个。
我希望能够将回调传递给在后台执行慢速进程的函数,并在进程完成后调用它。此回调可以是自由函数、静态函数或成员函数。我还希望能够在其中注入一些任意参数作为上下文。(即,在某种程度上实现了一个非常可怜的人的协程。)最重要的是,这个函数将始终采用 std::string,它是进程的输出。我不介意这个参数在最终回调参数列表中的位置是否固定。
我觉得答案将涉及 boost::bind 和 boost::function 但我无法计算出创建任意可调用对象所必需的精确调用(同时将它们咖喱化为仅采用单个字符串),将它们存储在后台进程中,并使用字符串参数正确调用可调用对象。