问题标签 [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++ - C++ 虚函数调用与 boost::function 快速调用
我想知道与一个相同的 boost::function 调用相比,单继承虚函数调用有多快。它们的性能几乎相同还是 boost::function 更慢?
我知道性能可能因情况而异,但是,作为一般规则,哪个更快,在多大程度上是这样?
谢谢,吉尔赫姆
- 编辑
KennyTM 的测试足以让我信服。对于我自己的目的, boost::function 似乎并不比 vcall 慢得多。谢谢。
c++ - 未解析的外部符号“public:void __thiscall ...”
我正在使用boost::function
将函数传递给Button
构造函数,以便它保存该函数。每当它被激活时调用它。
在我的 TitleState 中,我构建了一个像这样的 Button。
其中 ButtonAction 是static void
TitleState 标头中私有的函数,在实现文件中定义为通过 std::cout 简单地输出到控制台(仅作为测试它是否工作)。
在我的代码中,如果鼠标单击 TitleStateHandleEvents
函数中的按钮,程序会调用该按钮的Activate
函数,如下所示。
问题是,当程序尝试链接时,我收到此错误....
unresolved external symbol "public: void __thiscall Button::Activate(void)" (?Activate@Button@@QAEXXZ) referenced in function "public: virtual void __thiscall TitleState::HandleEvents(void)" (?HandleEvents@TitleState@@UAEXXZ)
除了链接器找不到函数的定义之外,我不确定问题是什么。一切都是#included
正确的或声明的。任何帮助表示赞赏。谢谢。
PS 当我使用 BoostPro 安装程序时,我只安装了单线程的东西,没有安装多线程的东西。这可能是它不起作用的原因吗?我读到当库以不同的方式链接时,可能会出现链接器问题。如果这可能是一个问题,我会补充说我也在使用 SFML 库。
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
只有一个过载的情况下,一切正常。当有多个非模板函数重载时,我知道如何解决类似的情况。有人可以帮我正确地写这个吗?还是我应该编写自己的比较函数?
function - boost::function 参数的默认值?
我有一个函数,我想将可选的 boost::function 参数作为回调来报告错误情况。是否有一些特殊值我可以使用默认值使其成为可选?
例如,使用常规函数指针,我可以这样做:
我可以用 boost::function 替换函数指针做类似的事情吗?
c++ - How to use boost::bind with non-copyable params, for example boost::promise?
Some C++ objects have no copy constructor, but have move constructor. For example, boost::promise. How can I bind those objects using their move constructors ?
c++ - Boost 模板参数中发现 C++ 奇怪的语法
我正在查看 Boost 中的“Function”类文档,并偶然发现了这一点:
我必须承认这种语法对我来说非常混乱。这怎么可能是合法的 C++ ?
引擎盖下有什么技巧吗?这种语法是否记录在任何地方?
function-pointers - boost::function 和普通函数指针:模棱两可的重载
给定以下成员函数重载以采用各种仿函数
和功能
那为什么要取baz的普通函数指针
产生这个错误:
如何解决这种歧义?
c++ - std::tr1::function::target和协/逆变
由于我喜欢使用 C# 和 C++ 进行编程,因此我将实现一个类似 C# 的事件系统,作为我计划中的 C++ SFML-GUI 的坚实基础。
这只是我的代码的摘录,我希望这能澄清我的概念:
如您所见,我使用 boost::signal 作为我的实际事件系统,但我使用 IEvent 接口(实际上是一个抽象类)将其封装,以防止事件侦听器通过 operator() 触发事件。
为方便起见,我重载了加赋值和减赋值运算符。如果我现在从 IEventListener 派生我的事件监听类,我可以编写代码而无需担心信号中的悬空函数指针。
到目前为止,我正在测试我的结果,但我遇到了以下问题std::tr1::function::target<TFuncPtr>()
:
The EventHandler<TEventArgs>::target<TFuncPtr>()
method will only return a valid pointer if TFuncPtr is the exact same type as stored in the Functor, regardless of covariance.
Because of the RTTI check, it prohibits to access the pointer as a standard weakly-typed C function pointer, which is kind of annoying in cases like this one.
The EventHandler is of type DerivedEventArgs but nevertheless points to a pfnBaseEventHandler function even though the function ran through the constructor.
That means, that std::tr1::function itself "supports" contravariance, but I can't find a way of simply getting the function pointer out of the std::tr1::funcion object if I don't know its type at compile time which is required for a template argument.
I would appreciate in cases like this that they added a simple get() method like they did for RAII pointer types.
Since I'm quite new to programming, I would like to know if there is a way to solve this problem, preferrably at compile-time via templates (which I think would be the only way).
c++ - C++ Boost 函数比较
我有一个包含 boost::function 作为其参数之一的类。我必须使此类相等性具有可比性,但 boost::function 不能具有可比性。这个问题有简单的解决方法吗?
谢谢,戈库尔。