0
これは単純なものでなければなりませんが、私はC++やバインドされた関数に慣れていません。基本的に私はこれをやろうとしている:私はserver
インスタンス引数を使用する場合バインドされた関数にインスタンスを渡そうとしています。C++
server.on("/capture", HTTP_GET, std::bind(&SolarCamera::serverCapture, this, 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));
...
そして、私はやりたいが、私はそのインスタンスにカメラのストリームを返すことができるようにSolarCameraクラスにそのserver
インスタンスを渡すことです。カメラインタフェースは、この
// SolarCamera.hpp
class SolarCamera
{
public:
SolarCamera();
void serverCapture(ESP8S266WebServer& server);
protected:
ArduCAM myCAM;
};
のようなものです。しかし、コンパイラは、メソッドの呼び出しでbalksと危ないログをダンプします:
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]