首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:对'uWS::TemplatedApp<false>::ws<main()::UserData>(const char的调用没有匹配函数[3],<大括号-封闭的初始化器list>‘’

错误:对'uWS::TemplatedApp<false>::ws<main()::UserData>(const char的调用没有匹配函数[3],<大括号-封闭的初始化器list>‘’
EN

Stack Overflow用户
提问于 2021-04-28 10:20:23
回答 1查看 347关注 0票数 0

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

main.cpp:

代码语言:javascript
运行
复制
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;
}

生成时错误消息:

代码语言:javascript
运行
复制
……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) {
    ^

env:

操作系统: Windows10 64位

艾德: QtCreator

编译器: MinGW 8.1.0 32位

c++std: 17

uwebsockets: 19.2.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-29 08:30:08

这是因为编译器不能将‘大括号内的初始化程序列表’转换为T&&。可以通过声明结构并将其转换为Rvalue引用来解决这个问题。

代码语言:javascript
运行
复制
  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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67298358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档