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]