After all typdefs are removed, I have the following declarations:
class Message {
protected:
Message* (*factories[N])(HardwareSerial);
...
}
class DebugMessage : Message {
protected:
Message* receive(HardwareSerial serial);
...
public:
DebugMessage(char* message);
...
};
Message* DebugMessage::receive(HardwareSerial serial){...}
DebugMessage::DebugMessage(char* message){
...
factories[DEBUG_MESSAGE] = &DebugMessage::receive;
...
}
However when I attempt to compile it I get an error on the assignment stating
debugMessage.cpp: In constructor ‘DebugMessage::DebugMessage(char*)’:
debugMessage.cpp:4:28: error: cannot convert ‘Message* (DebugMessage::*)(HardwareSerial)’ to ‘Message* (*)(HardwareSerial)’ in assignment
factories[DEBUG_MESSAGE] = &DebugMessage::receive;