|
5Qter豆
我要调用这样的一个函数int MQTTSubscribe(Client* c, const char* topicFilter, enum QoS qos, messageHandler messageHandler);其中c库里面有这样的定义struct MessageData
{
MQTTMessage* message;
MQTTString* topicName;
};
typedef void (*messageHandler)(MessageData*);
用c写的话,这样就行
rc = MQTTSubscribe(&c, topic, opts.qos, messageArrived);
void messageArrived(MessageData* md){ ...}//在这里面就可以处理接受到的消息通过分析MessageData里面的message 和topicName;
但是在c++里就不行,说/Mqtt/mainwindow.cpp:83:63: error: cannot convert 'MainWindow::messageArrived' from type 'void (MainWindowMessageData*)' to type 'messageHandler {aka void (*)(MessageData*)}'
rc = MQTTSubscribe(&client, topic,QOS1, messageArrived);
大家能帮我看看为什么么?谢谢啦重命名结构体指针那块我要怎么用呢?给点建议就成
|
最佳答案
查看完整内容
你的messageArrived必须是static的或者friendly的才可以使用这种调用方式
|