必须调用函子 ->对非静态成员函数的引用

Functor -> reference to non-static member function must be called

本文关键字:静态成员 函数 引用 gt 调用      更新时间:2023-10-16

我有一个我试图指出的成员函数的类,问题是我继续遇到此错误 reference to non-static member function must be called,这是我的理解是需要指向成员函数。问题是,当我尝试使用此解决方案时,编译器会抱怨,因为there is no viable conversion from 'void (Foo::*) (const List&) to std::function<void (const List &)>

这是我的Foo类:

class Foo {
public:
  int Run( int port);
  void HandleRequest(HTTPServerRequest* request);
private:
    int num_ports;
    void callback_method(const List& );
};  //class Foo
void Foo::HandleRequest(HTTPServerRequest* request){
std::function<void (const List&)> functor = callback_method;
}

您可以这样做:

void Foo::HandleRequest(HTTPServerRequest* request){
    std::function<void (const List&)> functor =
        std::bind(&Foo::callback_method, this, std::placeholders::_1);
}

或:

void Foo::HandleRequest(HTTPServerRequest* request){
    std::function<void (const List&)> functor = 
        [this](const List& list){callback_method(list);};
}