找回密码
 立即注册
收起左侧

c++调用c

2
回复
5562
查看
[复制链接]
累计签到:103 天
连续签到:1 天
来源: 2016-6-8 09:23:50 显示全部楼层 |阅读模式
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的才可以使用这种调用方式
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2016-6-8 09:23:51 显示全部楼层
你的messageArrived必须是static的或者friendly的才可以使用这种调用方式
回复

使用道具 举报

累计签到:103 天
连续签到:1 天
2016-6-12 15:40:59 显示全部楼层
sywh 发表于 2016-6-8 17:21
你的messageArrived必须是static的或者friendly的才可以使用这种调用方式

太感谢你啦,问题解决啦,你的答案就是正解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了