问题标签 [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 投票
2 回答
2268 浏览

c++ - 在 std::map 中存储 boost::bind 函数

我正在创建一堆函数,它们都有效地做同样的事情:

其中 Foo 是一个类。到目前为止,一切都相当简单。现在,我实际上想在此创建很多变体,但绑定到不同的集合。然后我想将这些存储在 std::map 中。因此,使用 boost::bind 和 boost::function,执行以下操作:

我遇到的问题是试图定义地图的类型。我以为会是:

但是用 MSVC 9.0 编译它会给出:error C2582: 'operator =' function is unavailable in 'boost::function<Signature>'.

map 的第二个模板参数到底应该是什么?

0 投票
1 回答
5354 浏览

boost - Boost.Bind 非静态成员

我有以下代码,其中 Boost.Local 使用函数回调来加载 mo 文件。该函数对我来说称为 findMo,我正在尝试将它绑定到一个对象,这样我就可以保留我放在 moFinder 的私有成员中的副作用。

编译时出现以下错误:

错误:无效使用非静态成员函数'std::vector moFinder::findMo(const std::string&, const std::string&)'</p>

在我调用 boost::bind 的那一行。

我在做什么才值得这个错误?

0 投票
1 回答
405 浏览

c++ - 使用 boost::bind 和 boost::function 的问题

从这个问题开始

如何将类成员函数传递给 3rd 方库中的方法?

快速回顾一下,我需要将指向函数的指针传递给第 3 方库中名为 moveset 的类的构造函数,其定义为

该库提供的示例是简单地为 pfInit 等定义全局函数,我们称它们为 f、g 和 h。然后从控制器类中调用 smc::moveset Moveset(f,g,h);

我试图使用 boost:bind 来实现这个建议。不幸的是,我正在努力让它发挥作用。

在控制器类中

产生的编译器错误是,

非常感谢任何帮助

0 投票
3 回答
717 浏览

c++ - 如何访问“boost::function”中的类实例(对象)指针?

在这种情况下,我想访问 inst 的指针(&inst)或来自“func”的地址,如下所示。

我能怎么做?

0 投票
1 回答
79 浏览

boost-bind - 如何使用 Boost 让类成员表现得像函数指针

我想让一个类成员函数表现得像一个函数指针。我需要这种行为来将我自己的类集成到一些现有的代码中。

使用 Boost::function 和 Boost::bind 似乎可以做到这一点,但我似乎无法让它工作。以下代码是我用来测试我的实现的最小示例。main() 程序的最后一行是我想做的。

任何帮助是极大的赞赏。我正在使用 g++ 和 Boost 1.46。

0 投票
1 回答
2203 浏览

c++ - 通过函子断开升压信号2连接

我正在尝试将一些使用不同系统的代码转换为使用 Boost.Signals2。旧代码使用常规函数指针作为函子;连接是通过使用函子调用特定方法来完成的,而断开连接是通过使用完全相同的函子调用另一个方法来完成的。出于兼容性原因,我仍然希望支持这一点,即使我知道这不是 Signals2 下最有效的方法。

上面的(简化的)代码可以很好地连接,但是 Unregister 方法在 VS2008 中不能编译:

那么,不知何故,函数对象不能与自身进行比较?我还尝试将 slot_function_type 用于 UpdateCallback,并明确将其指定为具有相同签名的 boost::function;这两个都产生了这个错误:

所以我想它已经从选择太少变成了太多。我该如何解决这个问题?

0 投票
1 回答
1701 浏览

c++ - 带有模板的头文件中的“未在范围内声明”错误

因此,我创建了一个包含以下内容的头文件:

但是,编译时会抛出错误,我不知道为什么。测试显然在范围内。

替换或仍然不起作用test<a>boost:ref(test<a>)&test<a>

有任何想法吗?

0 投票
1 回答
283 浏览

c++ - C ++模板参数推导不起作用

我需要覆盖 和 之间的boost::signals2::signal连接boost::function。为此,我创建了以下模板函数:

我想bind尽可能简单地使用它。从我在类似问题的帖子中读到的内容,模板参数应该从函数参数中推导出来。但在我的情况下,当没有明确的参数时它不起作用。

我错过了什么吗?
是否有任何解决方法可以避免显式模板参数?

0 投票
3 回答
16405 浏览

c++ - "尝试包装函数返回值时不提供调用运算符”错误

我正在尝试编写一个函数,该函数将函子作为参数,调用函子,然后返回其包装在boost::shared_ptr.

以下拒绝编译,我完全没有想法。我得到“std::vector< std::string > 不提供呼叫运算符”(大致)。我在 Mac OS X 上使用 Clang 3.1。

这是我尝试使用它的上下文:

编辑:这是一个完整的独立测试用例。此代码无法编译并出现相同的错误,并且对于我的生活,我看不出有什么问题:

这是错误输出:

这里还有一些线索。以下代码编译得很好,但这对我没有帮助,因为这不是我想要的代码:)

0 投票
1 回答
819 浏览

c++ - 错误:使用 boost-bind 到 boost-function 时,'operator[]' 的重载不明确

我正在尝试根据输入字符串的值将过滤器仿函数映射到我的类的成员方法之一。

我的错误:

编辑:根据对我的问题的建议答案的建议,我稍微简化了我的示例。有人建议我需要将 MyClass() 作为参数传递给 boost::bind,这确实解决了发布的代码段中的编译错误。但是,鉴于我的代码结构,我不可能这样做。我想知道为什么我所做的与 boost::bind 文档中的这个示例不同:

_1 参数不应该处理隐含的“this”吗?建议我使用 MyClass() 显式提供它?