使用 boost::bind 和 __fastcall
Using boost::bind with __fastcall
我有一个函数void __fastcall ClassName::FunctionName()
。
我想创建一个指向该函数的提升函数,使用 boost::bind。这可能吗?写 boost::bind(&ClassName::FunctionName, this)
给出编译错误 "member function must be called or its address taken".
一个可能的解决方法是创建一个包装函数,但这是不可取的,因为它会创建无用的额外代码:
void ClassName::FunctionName2(){
FunctionName();
}
...
boost::bind(&ClassName::FunctionName2, this);
这可以通过使用宏启用对 __fastcall
的支持来解决:
#define BOOST_MEM_FN_ENABLE_FASTCALL
#include <boost/bind.hpp>
在此之后,boost::bind 语法按预期运行。
这是一个不可移植的扩展,因此默认情况下不启用。 Boost::bind documentation.
我有一个函数void __fastcall ClassName::FunctionName()
。
我想创建一个指向该函数的提升函数,使用 boost::bind。这可能吗?写 boost::bind(&ClassName::FunctionName, this)
给出编译错误 "member function must be called or its address taken".
一个可能的解决方法是创建一个包装函数,但这是不可取的,因为它会创建无用的额外代码:
void ClassName::FunctionName2(){
FunctionName();
}
...
boost::bind(&ClassName::FunctionName2, this);
这可以通过使用宏启用对 __fastcall
的支持来解决:
#define BOOST_MEM_FN_ENABLE_FASTCALL
#include <boost/bind.hpp>
在此之后,boost::bind 语法按预期运行。
这是一个不可移植的扩展,因此默认情况下不启用。 Boost::bind documentation.