Я использую vector
в классе для хранения тем MQTT и указателей на внешние функции , которые обрабатывают сообщения MQTT для каждой темы. Я использую typedef
для определения указателей на функции обратного вызова mqtt вне класса и использую этот typedef в структуре, которая определяет объекты vector
.
Однако я получаю сообщение об ошибке компиляции: _'mqttCallback_t 'не был объявлен_, когда я пытаюсь использовать typedef
для определения указателя функции в функции-члене, которая будет добавлять объекты в вектор.
void addSubscription(char* topic, mqttCallback_t* cback) {
Я надеюсь, что кто-то может объяснить, почему компилятор генерирует это сообщение, и что нужно сделать, чтобы следующий код работал.
// define pointer to an MQTT callback function that is external to the class
typedef void (*mqttCallback_t)(char*, byte*, unsigned int);
class MqttClient{
struct MqttSubscription {
char topic[64];
mqttCallback_t* callback;
};
private:
byte brokerIP[4];
uint16_t maxPacketLength;
bool sessionActive;
std::vector<MqttSubscription> subList;
public:
void addSubscription(char* topic, mqttCallback_t* cback) {
MqttSubscription sub;
strncpy(sub.topic, topic, sizeof(sub.topic));
sub.callback = cback;
this->subList.push_back(sub);
}
);