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

0 投票
1 回答
469 浏览

c++ - 成员函数比较作为谓词

我有这样的结构。

我将这种结构的对象存储在一个向量中。

  1. 如何找到其成员someFun()返回的对象42

  2. 如何找到属于的_value对象42

我想我必须使用 and 的组合bindequal_to但我找不到正确的语法。

编辑:

谢谢。但还有一个疑问。

如果我有vector<A*>orvector<boost::shared_ptr<A> >怎么办?

0 投票
0 回答
439 浏览

network-programming - boost::asio 和 boost::bind 错误

这个问题有点烦人,我无法编译下面的代码。您必须编译下面的代码。

我在使用 boost asio 时遇到了一些问题,我试图将接受连接的逻辑抽象为一个统一的抽象,以便我可以使用常规 TCP/IP 统一启动 Windows 命名管道和 Unix 域套接字的连接。

下面的代码中显示了 3 个类,前 2 个是接受 TCP 连接的实现,下面的第三个类是根据前 2 个实现的泛型类。我在boost::bind调用时遇到问题。问题可能在于我对语义的理解。

如果我创建TcpDestinationAcceptor::handle_accept一个常规成员函数(即,不是模板成员函数),导致我没有传递AcceptHandler参数。代码编译得很好。注意:我不会从TcpDestinationAcceptor::StartAccepting.

注意:我已经开始了不同的设计,如果可能的话,我仍然想继续这个设计。

自包含代码:

0 投票
1 回答
1525 浏览

c++ - 用 std::tr1::bind 替换 boost::bind 的问题

我有以下代码在 Visual Studio 2008 SP1 下编译和运行良好。

如果我在 main() 中将 boost::bind 更改为 std::tr1::bind,则会出现错误:

错误 C2248: 'boost::noncopyable_::noncopyable::noncopyable': 无法访问在类中声明的私有成员'boost::noncopyable_::noncopyable'

此诊断发生在编译器生成的函数中'NoncopyableObject::NoncopyableObject(const NoncopyableObject &)'

所以它试图为 NoncopyableObject 生成一个复制构造函数。有人知道为什么会这样吗?MenuItemDispatcher 的调用运算符引用了一个 NoncopyableObject,所以我很难找出问题所在。

0 投票
3 回答
877 浏览

c++ - c ++:可以使用 boost::bind 将成员函数转换为预期的函数指针签名吗?

我正在使用将函数指针传递给方法调用的第 3 方库。

正常用法如下:

现在我想让 continueAfterOPTIONS 方法成为一个类的成员函数。通常我使用 boost::bind 来做到这一点:

导致

我尝试为函数的参数添加占位符,但这没有任何区别。我正在尝试做的事情可能吗?有没有办法投射绑定结果?

谢谢!

0 投票
2 回答
240 浏览

c++ - C++:调用从文本文件中解析参数列表的函数的方法

我希望允许从有点像脚本的文本文件中调用我的程序中的函数。

我希望能够使用此“脚本管理器”注册任何功能,而无需强制它符合某些特定签名。因此能够从脚本调用:MyFunc(bool, string) 或 MyFunc2(int, float, char)。在解析方面,我可以将这些参数放入参数列表中,但问题是如何将这些参数传递给函数?

我不能像 MyFunc(paramlist[0], paramlist[1]) 那样称呼它,因为这会强制执行特定的签名。我也不希望被调用的函数需要了解“脚本管理器”,因此它们不需要能够处理参数列表。

如何在不围绕前者(被调用的函数)编写一些包装器的情况下解耦这两个组件(被调用的函数和“脚本管理器”)?

0 投票
1 回答
539 浏览

c++ - 如何从模板签名创建 boost::function

最近我试图创建灵活的观察者模式实现,它隐藏了boost::signal. 我几乎成功了。

我有一个Observer类必须具有update模板参数提供的方法匹配签名。

使用示例:

observer如果没有重载update方法,一切正常。在那种情况下boost::bind不能推断出正确的方法来使用。不幸的是,我不能使用显式转换,因为我不知道更新参数(此信息在 中FunctionSignature)。

以下方法会导致麻烦:

我认为这boost::function可能有助于解决这个问题。我不知道如何仅使用模板签名将其与正确的成员方法绑定。

甚至可能吗?

0 投票
4 回答
1825 浏览

c++ - 消息系统:回调可以是任何东西

我正在尝试为我的游戏编写一个事件系统。我的事件管理器将存储的回调既可以是普通函数,也可以是仿函数。我还需要能够比较函数/函子,以便知道我需要从事件管理器断开哪个。

• 最初我尝试使用 boost::function;它可以很好地处理函数和仿函数,只是它没有运算符==,所以如果我愿意,我不能删除回调。

• 我也尝试使用 boost::signal,但这也给了我一个与 operator== 相关的编译问题:

二进制 '==' : 没有找到接受 'const Functor' 类型的左操作数的运算符(或者没有可接受的转换)

关于我如何实现这一点的任何其他建议?或者也许我怎样才能使 boost:: 函数或 boost::signal 工作?(我宁愿使用 boost:: 函数,因为我听说对于小项目集合的信号相当慢。)


编辑:这是我希望 EventManager 拥有的界面。

0 投票
2 回答
1069 浏览

c++ - 比较 Boost.Bind 返回的对象?

是否可以?该指令bool b = (boost::bind(func, 1) == boost::bind(func, 1))无法编译,因为它“无法从 'boost::_bi::bind_t' 转换为 'bool'”。(的签名funcvoid func(int)。)

0 投票
1 回答
155 浏览

c++ - 模板重载(不同的参数数量)

我想创建您在下面看到的这些功能模板。他们的目的是比较函子,但我需要介绍 boost.bind 类型函子的特殊情况。

问题是当我这样做时compare(boost::bind(func, 1), boost::bind(func, 1)),编译器会尝试使用第二个模板。如果我注释掉第二个,它将正确使用专门用于 boost.bind 类型的那个,一切都会正常工作。

我怎样才能让它选择正确的功能模板来使用?

0 投票
1 回答
946 浏览

c++ - Boost.Bind 与函数和 Python

我得到一些编译时错误,我不明白为什么会这样。以下代码将拒绝编译,给我以下错误:

错误 C2664: 'void (PyObject *,const char *,boost::type *)' : 无法将参数 1 从 'const char *' 转换为 'PyObject *'
错误 C2664: 'void (PyObject *,const char *,boost ::type *)' : 无法将参数 3 从 'boost::shared_ptr' 转换为 'boost::type *'