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

问题描述:

我有一个类,其成员函数我试图指向,问题是我一直得到这个错误reference to non-static member function must be called,从我的理解是,成员函数需要指出。问题是,当我尝试使用this解决方案,编译器会抱怨,因为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);}; 
} 
+0

谢谢!奇迹般有效。我使用了第一个选项。你能向我解释吗? –

+0

你可以看到这个:[link](http://en.cppreference.com/w/cpp/utility/functional/bind) –