了解错误 C2664:无法转换参数 1

Understanding Error C2664: Cannot convert argument 1

本文关键字:转换 参数 错误 C2664 了解      更新时间:2023-10-16

以下代码片段

#include "uWS/uWS.h"
int main()
{
  uWS::Hub h;
  h.onConnection([&h](uWS::WebSocket<uWS::SERVER> *ws, uWS::HttpRequest req) {
    std::cout << "Connected!!!" << std::endl;
  });
  h.run();
}

生成错误

Severity Code Description Project File Line Suppression State Error (active) E0304 no instance of overloaded function "uWS::Hub::onConnection" matches the argument list pid c:UsersRsrcmain.cpp 6 Error C2664 'void uWS::Group<false>::onConnection(std::function<void (uWS::WebSocket<false>,uWS::HttpRequest)>)': cannot convert argument 1 from 'main::<lambda_1afdd040d2f03ded23f0c636dc85475d>' to 'std::function<void (uWS::WebSocket<true>,uWS::HttpRequest)>' pid c:usersrsrcmain.cpp 8

当使用 Windows SDK 版本 10.0.15063.0 在 Visual Studio 2017 IDE 中构建时,其中"uWS/uWS.h"包含微小的Web套接字定义

可能是什么问题?

从错误消息来看,onConnection 函数似乎需要一个接受uws::WebSocket但您的 lambda 函数接受uws::WebSocket*