这一定很简单,但我对 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]