I am new to C++ and I am having trouble with pointer functions to member functions. I am programming with PlatformIO on an ESP8266.
UdpTask.h
class UdpTask : public Task {
public:
void setup();
void loop();
UdpTask(String (*handleGson)(String));
private:
char replyPacket[];
char incomingPacket[UDP_TX_PACKET_MAX_SIZE];
unsigned int localUdpPort;
WiFiUDP Udp;
String (*handleGson)(String);
};
UdpTask.cpp
UdpTask::UdpTask(String(*handleGson)(String)) {
this->handleGson = handleGson;
}
GsonHandler.h
class GsonHandler {
public:
String handleGson(String gson);
};
GsonHandler.cpp
String GsonHandler::handleGson(String gson) {
return ":)";
}
main.cpp
GsonHandler gsonHandler;
UdpTask udpTask(&gsonHandler.handleGson);
Error:
src\main.cpp:16:30: error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say '&GsonHandler::handleGson' [-fpermissive]
UdpTask udpTask(&gsonHandler.handleGson);
^
src\main.cpp:16:40: error: no matching function for call to 'UdpTask::UdpTask(String (GsonHandler::*)(String))'
UdpTask udpTask(&gsonHandler.handleGson);
Note: I've tried the suggestions in the error message, but I can't find a way to get it to work..., furthermore, I know that in this simple example it can be solved much easier with for example just passing the whole object but I need this kind of pointers again where this way is easier.
Thanks in advance.