C++ 对std::function对象的调用不匹配,该对象是指向成员函数的指针
我想要一个类保存一个指向另一个类的成员函数的函数指针 但当我尝试使用函数指针调用该成员函数时,得到的是错误: 对“(const std::function)()的调用不匹配” 我不使用原始函数指针,而是使用C++ 对std::function对象的调用不匹配,该对象是指向成员函数的指针,c++,function-pointers,std-function,member-functions,C++,Function Pointers,Std Function,Member Functions,我想要一个类保存一个指向另一个类的成员函数的函数指针 但当我尝试使用函数指针调用该成员函数时,得到的是错误: 对“(const std::function)()的调用不匹配” 我不使用原始函数指针,而是使用std::function对象,因为如果要指向成员函数(它们需要引用我调用的成员函数的类的实例),这是一种方法 我的第一节课是: class Condition : public ICondition { public: Condition(std::function<bool
std::function
对象,因为如果要指向成员函数(它们需要引用我调用的成员函数的类的实例),这是一种方法
我的第一节课是:
class Condition : public ICondition
{
public:
Condition(std::function<bool(Cache&)> cacheGetMethod, bool value)
{
m_getter = cacheGetMethod;
m_value = value;
}
virtual bool check() const
{
// this is where I get the error, so the way I call the std::function object is wrong?
return m_getter() == m_value;
}
virtual ~Condition() {}
private:
std::function<bool(Cache&)> m_getter;
bool m_value;
};
下面是我如何在我的主要功能中使用它:
std::shared_ptr<Cache> cache = std::make_shared<Cache>();
std::vector<ICondition*> conditions;
conditions.push_back(new Condition(std::bind(&Cache::getLamp, cache), true));
std::shared_ptr cache=std::make_shared();
std::向量条件;
条件。推回(新条件(std::bind(&Cache::getLamp,Cache),true);
因此,我想使用的一个条件基本上检查灯的值是否为真
std::function<bool(Cache&)> m_getter;
现在,您可以将其称为m_getter()
,并将使用随std::bind
提供的Cache
对象
std::function<bool(Cache&)> m_getter;
现在您可以将其称为
m_getter()
,并且将使用您为std::bind
提供的Cache
对象。这里std::function
您说该函数采用缓存&
。为什么不将缓存
传递给它呢?我很确定,这也不是如何将实例绑定到成员函数,因为隐式实例参数是指针(即它是this
)。编辑:根据我的dupe建议,我收回它:“std::bind()
足够聪明,可以使用任何看起来像指针的东西,任何可以转换为适当类型的引用的东西(比如std::reference\u wrapper
),或者当第一个参数是指向成员的指针时,对象的[副本]作为对象。”此处std::function
可能存在重复,您说该函数需要缓存&
。为什么不将缓存
传递给它呢?我很确定,这也不是如何将实例绑定到成员函数,因为隐式实例参数是指针(即它是this
)。编辑:根据我的dupe建议,我收回它:“std::bind()
足够聪明,可以使用任何看起来像指针的东西,任何可以转换为适当类型的引用的东西(比如std::reference\u wrapper
),或者当第一个参数是指向成员的指针时,对象的[copy]作为对象。”
std::function<bool()> m_getter;