在不将 class 作为参数的情况下在成员函数内创建仿函数

Creation of a functor inside a member function without taking the class as a argument

对加密解密表示歉意。

我希望创建以下类型的仿函数:

const boost::function<bool ()>& functor

请考虑 class:

#include <boost/function.hpp>
class X { 
    public:
        bool foo();
        void bar() ;
};

void X::bar() {
    const boost::function<bool (X *)>& f = &X::foo;
}

bool X::foo() {
    std::cout << __func__ << " " << __LINE__ << " " << std::endl;
    return true;
}

我有:

const boost::function<bool (X *)>& f = &X::foo;

我可以有类似的东西吗

const boost::function<bool ()>& f = &X::foo;

与 boost::bind 或其他 ?

谢谢

必须使用对象调用非静态成员函数。因此,您必须始终隐式传递 this 指针作为其参数。

您可以通过 boost::bind 完成此操作:

const boost::function<bool()>& f = boost::bind(&X::foo, this);