函子 - >对非静态成员函数的引用必须调用
问题描述:
我有一个类,其成员函数我试图指向,问题是我一直得到这个错误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);};
}
谢谢!奇迹般有效。我使用了第一个选项。你能向我解释吗? –
你可以看到这个:[link](http://en.cppreference.com/w/cpp/utility/functional/bind) –