0
这必须是简单的东西,但我没有使用C++或绑定函数的经验。基本上我试图做到这一点:尝试将实例传递给绑定函数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]