问题标签 [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.

0 投票
3 回答
226 浏览

c++ - 指向函数的指针

我必须将函数传递给指针。为此,我使用了 boost::function。捕获指针的函数针对不同的签名进行了重载。例如:

现在我想在那里传递一些类方法指针:

0 投票
2 回答
1862 浏览

c++ - 存储升压功能

我必须存储不同boost::function对象的列表。为了提供这一点,我正在使用 boost::any。我有一些函数采用不同的函数签名,将它们打包成任何函数,然后插入到具有给定类型的特殊映射中。这是代码:

现在我有地图增强功能,从枚举中打包到任何给定类型中,以便将来识别它。现在我必须调用给定的函数。来自 any 的铸造不起作用:

这不会强制转换,并且在运行期间出现异常:

是否可以转换回boost::function对象?

0 投票
2 回答
189 浏览

c++ - 通过 boost::function_base 调用 boost::function

我有一个 unordered_map 函数,在解析 XML 文件时应该在对象上调用这些函数。
我发现 boost::function 有一个名为 boost::function_base 的基类,但是正如预期的那样,我无法调用它,因为我没有函数的签名。
由于所有这些函数都是 setter 函数,我可以保证它们返回 void 并且只有一个未知类型的参数。
除了我试图避免的 if-else-if 分支之外,有没有更好的方法来解决类型?

0 投票
2 回答
1901 浏览

c++ - boost::function 内存使用

我正在考虑boost::function在我的计时器管理器的实现中使用。在调度计时器 aboost::function将被传递,并且在计时器到期时将执行回调。时间将以非常高的频率(约 1000 次动作/秒)安排/取消。

但我担心boost::function可能使用的堆内存量。

例如,我知道它boost::asio使用boost::function了很多,而对库的性能要求可能非常高。

你怎么看?

0 投票
1 回答
400 浏览

c++ - boost中有一个通用的“清理”类吗?

我只是想要一个这样做的类:

目的是我有这个“清理”来在 func 被删除时调用它。cleanup 将作为 shared_ptr 传递。

我也考虑过在 boost::shared_ptr 中使用自定义删除器。也许我可以使用 boost::shared_ptr 并使用 NULL 创建并让 func() 获取它忽略的参数。

这一切的目的是抽象出一个步骤,我希望类的析构函数在最后一个引用超出范围时执行(实际上从包含它的容器中删除自己,而类不必知道它的容器)。

如果我用 shared_ptr 来做,我可能会绕过其中之一:

这里 func 必须带一个参数。我不能 100% 确定如果指针为 NULL,删除器总是会被调用,所以也许我需要使用不同的指针,这使得它开始变得“​​凌乱”。

有没有标准的方法来处理这个问题,如果没有,最好的方法是什么?

0 投票
3 回答
2531 浏览

c++ - boost::function 和多参数成员函数

我对 boost::function 对象有以下定义:

我将此函数作为结构构造函数参数传递:

现在我需要将 传递struct add_node_value_visitor给以下函数,但是boost::function<T>不接受 2 arg 成员函数,在文档中说我应该使用 boost::bind,但是我不确定我会怎么做,看到我还必须满足我的 boost::apply_visitor 功能。

有什么想法吗?

0 投票
2 回答
1255 浏览

c++ - 如何序列化 boost::function 以将其发送到 message_queue

我实际上是在尝试使用 boost::serialize 序列化 boost::function,因为我想在 boost::interprocess::message_queue 中共享它。我只看到了一种方法,那就是使用非侵入式的 boost::serialize 版本。

我还需要序列化 ​​vtable 和 functor,我没有尝试过,我不确定它是否有效。

那么有什么方法可以以适当的方式序列化 boost::function 吗?

谢谢你。

0 投票
1 回答
707 浏览

c++ - boost::function 赋值给成员函数

我想使用 aboost::function并将其传递给一个函数以作为回调函数。我似乎在为它分配成员函数时遇到了一些麻烦。

我要传递给它的函数是一个静态函数(因为它是在另一个线程上调用的)。

这是在ResolverCommunicator类里面,但是我的编译器抱怨:

然后我只是传递call_back给在另一个线程上调用的静态函数。

有人知道出了什么问题吗?

编辑:

我已经按照答案说的做了,但是现在我收到了这个错误:

0 投票
1 回答
1004 浏览

c++ - 如何调用 shared_ptr从循环中的向量?

我有一个使用 boost::signal 的有效回调系统。我将它扩展为一个更灵活、更高效的回调管理器,它使用 shared_ptr 的向量来处理我的信号。我已经能够成功地创建回调并将其添加到列表中,但我不清楚如何实际执行信号。

所有这些代码都有效。我只是不确定如何使用向量从 shared_ptr 中运行调用。任何帮助都会很整洁。提前致谢。

0 投票
2 回答
479 浏览

c++ - boost::bind 和对临时变量的引用

假设我有方法:

我可以创建 boost::function:

f其中 temp 是在调用之前删除的 char* 。