gpt4 book ai didi

c++ - 在不将类作为参数的情况下在成员函数内创建仿函数

转载 作者:太空狗 更新时间:2023-10-29 20:57:24 26 4
gpt4 key购买 nike

为神秘的解密道歉。

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

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 或其他方法?

谢谢

最佳答案

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

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

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

关于c++ - 在不将类作为参数的情况下在成员函数内创建仿函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com