错误:将“ const字符串{aka const std :: basic_string }”作为…的“ this”自变量传递……丢弃限定词[-fpermissive]

问题描述 投票:0回答:1

我正在尝试使用Cpprest SDK(Casablanca)实现Websocket客户端。我成功建立了Web套接字连接并能够发送/接收消息。收到的响应作为websocket_incoming_message的实例,该实例具有方法extract_string(),其定义为,]

_ASYNCRTIMP pplx::task<std::string> web::websockets::client::websocket_incoming_message::extract_string (       )   const

因此返回,常量字符串。

我正在尝试将此字符串分配给函数局部字符串变量,以便可以将其返回给调用方法。但是,我收到以下错误,

error: passing ‘const string {aka const std::basic_string<char>}’ as ‘this’ argument of ‘std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ discards qualifiers [-fpermissive]

下面是我的代码块,

   std::string WebSocketUtility::send_command(const char* command){

    websocket_outgoing_message o_msg;
     std::string ws_response;

    o_msg.set_utf8_message(command);
    client->send(o_msg).then([](){
        log("Message Sent!!!\n");
    });

    client->receive().then([ws_response](websocket_incoming_message i_msg){ 
           return i_msg.extract_string();
        }).then([ws_response](std::string ws_body){ 
                 ws_response = ws_body;  
        });

   log("WS_RESPONSE:%s:\n",ws_response.c_str());
    return ws_response;
  }

我已经尝试过1,声明ws_response作为参考2.在lambda中捕获ws_response作为参考3.将ws_response声明为cpprest json,并将响应分配为json字段(ws_response [U(“ output”)] = json :: value :: string(ws_body.c_str()))

没有运气。

我在C ++中没有太多的编码经验,因此一直在苦苦挣扎。

有人可以帮助我如何在lambda之外捕获此响应,以便我将值返回给调用方法吗?

感谢与问候,Swathi Desai

我正在尝试使用Cpprest sdk(卡萨布兰卡)实现Websocket客户端。我成功建立了Web套接字连接并能够发送/接收消息。响应以...

c++ websocket stdstring casablanca cpprest-sdk
1个回答
0
投票

没有理由让此lambda捕获ws_response,因为它根本不使用ws_response

© www.soinside.com 2019 - 2024. All rights reserved.