Попытка передать экземпляр связанной функции Переполнение стека

Это должно быть что-то простое, но у меня нет опыта работы с 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]

0

Решение

В своем заявлении связывания вы используете this, который указывает на случай SolarServerно метод, к которому вы пытаетесь привязаться, имеет тип SolarCamera, Вместо того, чтобы использовать this, вам нужно дать ему ссылку на экземпляр SolarCamera.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]