【问题标题】:error: no matching function for call to 'uWS::TemplatedApp<false>::ws<main()::UserData>(const char [3], <brace-enclosed initializer list>)'错误:没有匹配函数调用 'uWS::TemplatedApp<false>::ws<main()::UserData>(const char [3], <brace-enclosed initializer list>)'
【发布时间】:2021-04-28 10:20:23
【问题描述】:

我正在使用 uwebsockets 来创建 ws 服务器。

ma​​in.cpp:

int main()
{
  struct UserData {

  };

  uWS::App().ws<UserData>("/*", {

      /* Just a few of the available handlers */
      .open = [](auto *ws) {
          /* MQTT syntax */
          ws->subscribe("sensors/+/house");
      },
      .message = [](auto *ws, std::string_view message, uWS::OpCode opCode) {
          ws->send(message, opCode);
      }

  }).listen(9001, [](auto *listenSocket) {

      if (listenSocket) {
          std::cout << "Listening on port " << 9001 << std::endl;
      }

  }).run();
  return 0;
}

构建时的错误消息:

……main.cpp:22:4: note:   cannot convert '{<lambda closure object>main()::<lambda(auto:11*)>{}, <lambda closure object>main()::<lambda(auto:12*, std::string_view, uWS::OpCode)>{}}' (type '<brace-enclosed initializer list>') to type 'uWS::TemplatedApp<false>::WebSocketBehavior<main()::UserData>&&'
   }).listen(9001, [](auto *listenSocket) {
    ^

环境:

操作系统:Windows10 64 位

IDE:QtCreator

编译器:MinGW 8.1.0 32bit

c++std: 17

uwebsockets:19.2.0

【问题讨论】:

    标签: c++ mingw32 uwebsockets


    【解决方案1】:

    这是因为编译器无法将“大括号括起来的初始值设定项列表”转换为 T&&。可以通过声明结构并将其转换为右值引用来解决。

      struct UserData {
    
      };
    
      uWS::TemplatedApp<false>::WebSocketBehavior<UserData> wsb = {
        /* Just a few of the available handlers */
        .open = [](auto *ws) {
          /* MQTT syntax */
          ws->subscribe("sensors/+/house");
        },
        .message = [](auto *ws, std::string_view message, uWS::OpCode opCode) {
          ws->send(message, opCode);
        }
      };
    
      uWS::App().ws<UserData>("/*", std::move(wsb)).listen(9001, [](auto *listenSocket) {
          if (listenSocket) {
              std::cout << "Listening on port " << 9001 << std::endl;
          }
      }).run();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多