C++ 卡萨布兰卡没有';不能从公共方法绑定
作为标题,我有一个可以工作的客户机-服务器应用程序,但现在我尝试重新设计我的软件,使其更加优雅。因此,我创建了一个服务器类来创建http_侦听器并处理POST和GET方法,但此后它就不再工作了。在.h中,我有:C++ 卡萨布兰卡没有';不能从公共方法绑定,c++,visual-studio-2013,httplistener,cpprest-sdk,C++,Visual Studio 2013,Httplistener,Cpprest Sdk,作为标题,我有一个可以工作的客户机-服务器应用程序,但现在我尝试重新设计我的软件,使其更加优雅。因此,我创建了一个服务器类来创建http_侦听器并处理POST和GET方法,但此后它就不再工作了。在.h中,我有: class Server { 公众: 服务器(){} { } handle_get是在.c中为test定义的,它可以工作,但我不能支持POST方法。 我还尝试了不同的POST方法初始化,如下所示: m_listener.support(methods::GET, std::bind(&
class Server
{
公众:
服务器(){}
{
}
handle_get是在.c中为test定义的,它可以工作,但我不能支持POST方法。
我还尝试了不同的POST方法初始化,如下所示:
m_listener.support(methods::GET, std::bind(&Server::handle_post, this, std::placeholders::_1));
但它不起作用。
建议
m_listener.support(methods::POST, [this](http_request request){ this->handle_post(request); });
看起来更正确。但是,http\u请求可复制吗?如果不可复制,则需要std::move
它或通过引用传递
看起来更正确。但是,http\u请求
可复制吗?如果不可复制,您将需要std::move
它或通过引用传递。现在它可以工作了,您能告诉我为什么我的2个“解决方案”不起作用?我在stackoverflow的许多线程中都发现了它们,但没有成功。@kenhero我不熟悉您正在使用的库,但我的第一个想法是您在第一次尝试时没有传递这个。现在它起作用了,您能告诉我为什么我的2个“解决方案”不起作用?我在stackoverflow的许多线程中都发现了它们,但没有成功。@kenhero我不熟悉您正在使用的库,但我的第一个想法是您在第一次尝试时没有传递this
。
Server::Server(utility::string_t url) : m_listener(url)
m_listener.support(methods::POST, [this](http_request request){return Server::handle_post(request); });
m_listener.support(methods::GET, handle_get);
m_listener.support(methods::GET, std::bind(&Server::handle_post, this, std::placeholders::_1));
m_listener.support(methods::POST, [this](http_request request){ this->handle_post(request); });