如果 C++11 可用,请考虑使用 lambda。否则,您可以使用 Boost.Lambda:
boost::function<bool(int x, int y)> purp = !!boost::lambda::bind(&A::derp, this);
int
这使用to的标准转换bool
。
A::derp
如果你想要一个特定的返回值true
,那么使用==
. 例如,假设您希望返回值 3 为true
:
boost::function<bool(int x, int y)> purp = boost::lambda::bind(&A::derp, this) == 3;
编辑:完整示例:
#include <iostream>
#include <boost/function.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
struct A {
virtual int derp() {
std::cout << "within A::derp()\n";
return 0;
}
void slurp() {
boost::function<bool(int x, int y)> purp = !!boost::lambda::bind(&A::derp, this);
std::cout << (purp(3, 14) ? "true" : "false") << '\n';
}
};
int main()
{
A a;
a.slurp();
}
输出:
在 A::derp() 内
错误的