尝试将实例传递到绑定的函数C

Trying to pass an instance to a bound function C++

本文关键字:绑定 函数 实例      更新时间:2023-10-16

这必须是简单的东西,但是我没有C 或界限。基本上我正在尝试这样做:

server.on("/capture", HTTP_GET, std::bind(&SolarCamera::serverCapture, this, server));

问题是当我使用server实例参数时。没有该实例的其他类似绑定。

server在此定义为一种受保护的方法。

//SolarServer.hpp
class SolarServer
{
  public:
    SolarServer(int port);
    void startRouter();
  protected:
   ESP8266WebServer server;
};
//SolarServer.cpp
SolarServer::SolarServer(int port): server(port){}
void SolarServer::startRouter() {
  //capture cam
  server.on("/capture", HTTP_GET, std::bind(&SolarCamera::serverCapture, this, server));
...

我要做的就是将server实例传递给SolarCamera类,以便我可以将相机流返回到该实例。相机界面就像这样

// SolarCamera.hpp
class SolarCamera
{
  public:
    SolarCamera();
    void serverCapture(ESP8S266WebServer& server);
  protected:
    ArduCAM myCAM;
};

但是,编译器在方法调用时吹来并转储一个粗糙的日志:

error: pointer to member t
ype 'void (SolarCamera::)(ESP8266WebServer&)' incompatible with object type 'SolarServer'
error: return-statement wi
th a value, in function returning 'void' [-fpermissive]

在您的绑定语句中,您使用的是this,它指向SolarServer实例,但是,您要绑定到类型SolarCamera的方法。您需要将其引用SolarCamera实例,而不是使用this