如何在类向量中存储/使用外部函数指针

时间:2019-04-27 01:43:14

标签: c++ vector function-pointers

我在一个类中使用vector来存储 MQTT主题和指向外部函数的指针,该函数处理每个主题的MQTT消息。我使用typedef在类之外定义mqtt回调函数指针,并在定义vector对象的结构中使用该typedef。

但是,当我尝试使用typedef在成员函数中定义函数指针(该函数将对象添加到向量)中定义_'mqttCallback_t'时,我收到了编译错误。

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);
    }
);

1 个答案:

答案 0 :(得分:0)

原来是编译器问题:

预处理器正在声明该类前进。换句话说,编译器正在尝试在typedef之前编译该类。

将typedef移至.h文件即可解决此问题。

感谢那些添加评论的人。