在下面的代码中我制作地图,
然后添加一些httprequest类实例,
然后我使用httprequest类的成员函数来调用boost asio spawn,
之前我问过这件事,并告诉它重复,
所以我读了帖子并做了一些挖掘,发现了以下内容:
我必须使用boost :: bind将成员函数及其参数转换为单个函数对象
并且在boost boost中我必须添加方法工作的实例的地址,并且方法的地址“如果从类定义或从使用的实例中获取方法的地址,请不要
然后添加参数。
我的地图有由共享指针表示的httprequests
当我写这个并编译它给了我很多与bind相关的错误
问题陈述在绑定文件中,代表我的代码,但没有说明有问题的部分。
这是代码:
std::map<std::string, boost::shared_ptr<HTTPRequest>> requests_variables;
std::map<std::string, boost::shared_ptr<HTTPResponse>> tasks;
for (int hour = 0;hour < 24;hour++)
{
std::stringstream ss_hour;
ss_hour << std::setw(2) << std::setfill('0') << hour;
std::string url_hour{ ss_hour.str() };
std::stringstream().swap(ss_hour); // swap m with a default constructed stringstream
URL = URL + url_hour +"h_ticks.bi5";
std::string request_name = "request_" + std::to_string(hour);
requests_variables[request_name] = client.create_request(hour, URL);
boost::asio::spawn(client.get_service_reference(), boost::bind(&(*requests_variables[request_name]),&(*requests_variables[request_name]).execute, boost::placeholders::_1, tasks, request_name, requests_variables));
我试图多次操纵它以使其编译但是徒劳无功 绑定有问题,但我无法达到它 提前谢谢..
答案 0 :(得分:0)
我不知道为什么,但这使它成功了。
HTTPRequest* requst_z = requests_variables[request_name].get();
boost::asio::spawn(client.get_service_reference(), boost::bind(&HTTPRequest::execute, requst_z, boost::placeholders::_1, tasks, request_name, requests_variables));