问题标签 [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 函数和 lambda 来包装一个函数
我想转换这个简单的代码:
类似的东西,为了不在外面声明 setZComp 而是某种内联声明
我对 Boost Bind 和 Lambda 很陌生,我不知道这是否可以通过某种方式完成。显然上面的代码不起作用。
c++ - 如何保存可变参数函数的注册表
我将解释我正在尝试做的事情:
我正在开发一款游戏。为了处理图形,我有一堆我更新和绘制的 ScreenLayers。ScreenLayer 负责为游戏的某些方面(库存、派对概览、世界地图、瓷砖地图等)提供可视化。
为了处理屏幕转换,我想为各种屏幕类型创建一个函数注册表,然后屏幕将调用此注册表以从绘图堆栈中推送和弹出屏幕图层。(即,当在瓦片地图上时,如果您按下开始,瓦片地图将调用注册表并告诉它创建一个根开始菜单屏幕。开始菜单将被推到瓦片地图的顶部并控制输入直到开始菜单关闭,此时它会从堆栈中弹出并将控制权交还给调用它的层)
问题是每个屏幕层都需要一组不同的参数来构造它
IE
对比
理想情况下,我希望每个屏幕都能够注册一个小功能,将我的屏幕层包裹起来并使其成为适当的 ScreenStack
IE
我需要一种方法来注册接受可变参数的 ScreenStack 创建函数,并且如果可能的话,允许每个 ScreenLayer 派生类自己注册这个堆栈创建函数。
我最初的想法是尝试这样的事情:
但是, boost::function 不适用于<cstdarg>
. 此外,在尝试实例化它们之前,我无法看到预注册屏幕。
我考虑过在 boost::function 上切换到一些通用的 void 函数指针,但如果我可以避免这样做,我想这样做。我认为可以使用预处理器进行堆栈注册,但我对预处理器没有很多经验,所以我不知道如何做到这一点。
我正在考虑使用工厂来创建屏幕堆栈,但是随着我添加越来越多的屏幕图层类型和各种参数,我必须不断更新工厂函数,所以这似乎不是一个很好的解决方案。
如果有人可以帮助我,将不胜感激。如果我不清楚某事,请告诉我
c++ - 使用 boost::bind 实现无操作函子
我有一个功能void get(boost::function<void(void)> callback) { callback(); }
。我想在get(boost::bind(/* don't know what to put here*/));
不实现任何其他函数、变量或结构的情况下进行调用,以便回调什么都不做。是否可以在C++03中实现这样的“无操作”回调?
使用 ofboost::bind()
是首选但不是必需的 - 可能是,还有一些其他技巧可以实现我的目标。
c++ - boost::function 如何支持不同长度模板参数的模板类
我想使用 boost 预处理器来声明具有不同模板变量长度的模板类,基本上就像 boost::function 所做的那样。
上面的代码显然不会工作,因为它在同一个头文件中声明了具有不同模板变量长度的同一个类。我想要实现的是包含一个文件并定义具有不同模板变量长度的类,就像 boost::function 一样。
我查找了 boost::function 的代码,但我不知道它是如何工作的。有任何想法吗?
c++ - Boost函数和boost绑定:绑定返回值?
这与上一个问题有关:Using boost::bind with boost::function: retrieve binded variable type。
我可以绑定这样的函数:
在.h中:
在.cpp
但是我怎样才能绑定一个返回值呢?IE:
在.h中:
在.cpp
c++ - 使用异步函数提升 asio 编译错误
我想创建一个异步。服务器。我成功地做到了,但现在我想将 async_read/asyn_write 函数绑定到调用者对象函数。所以我试着用 boost::function 来做到这一点,你有我的代码:
服务器.cpp
Client.h 和 .cpp
和 Network.cpp 和 .h
当我想编译它时,我有以下错误:
经过这么多小时的“谷歌搜索”和反思,我没有找到为什么我有这些错误。任何人都可以帮助我吗?
c++ - VS2010 中的 boost::function : 错误 C2039: 'function' : is not a member of 'boost'
信息
我想使用 boost::function 将回调作为参数传递,就像这样:
然后使用它:
毕竟在我打电话的一连串回调之后
问题
我刚刚在Debug中编译了解决方案,一切看起来都很好......
但是在Release中我遇到了很多上面提到的错误
我感到困惑和失望。
建议
我发现boost::function
. 例如boost::function0
或boost::function1
。这是因为 VS2010 不支持某些东西(我不知道到底是什么)
我对吗?
我还需要使这个应用程序尽可能可移植和跨平台。
提升 1.47 和 VS2010
c++ - 使用 mpl::if_、boost::function 和 typedef 来 void 的问题
我是 Boost.MPL 库的新手,有一些“初学者问题”
看看这个样本:
编译时我得到:
这里有什么问题,我该如何解决?
mpl::if_
据我了解,编译器仅应评估的选定部分....
c++ - Boost Overload 奇怪的行为.. `int (int), int (std::string)` 与 `int (int), int (std::string), std::string (std::string)` 有何不同?
所以有一个很棒的库叫做OverLoad(链接到可下载的 svn 目录,lib 只是标题)。它可以接受任何类型的函数,并自动决定您调用的是哪一个。它类似于增强功能,但更好。这里有 2 个代码示例(浏览器可以查看 boost svn )一二 。这是我的代码,它没有编译并且基于它们:
所以我想知道如何解决这个问题?
c++ - Bind function pointer to boost::function object
How can I initialize a boost::function
object with a raw function pointer?
Metacode
...
If you need additional information's just let me know.