在成员函数内创建一个仿函数,而不将该类作为参数

时间:2015-06-15 15:26:39

标签: c++ boost bind functor

为神秘的解密道歉。

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

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

请考虑上课:

#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还是别的什么?

由于

1 个答案:

答案 0 :(得分:4)

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

您可以使用boost::bind完成此操作:

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