gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 22:46:29 26 4
gpt4 key购买 nike

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

关于c++ - Functor -> 必须调用对非静态成员函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42238833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com