【问题标题】:Functor -> reference to non-static member function must be calledFunctor -> 必须调用对非静态成员函数的引用
【发布时间】:2017-02-15 00:39:36
【问题描述】:

我有一个类,我试图指向其成员函数,问题是我不断收到此错误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;
}

【问题讨论】:

    标签: c++ function class functor


    【解决方案1】:

    你可以这样做:

    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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多