如何解决在void函数中收到未知类型
我收到参数pr
,并且在打印时其类型为St10shared_ptrIKN4mqtt7messageEE
。你知道是哪种类型吗?我想收到一个mqtt类型的参数。
cpp
#define RAPIDJSON_HAS_STDSTRING 1
#include <boost/units/cmath.hpp>
#include <boost/units/systems/si/prefixes.hpp>
#include <chrono>
#include <exception>
#include <functional>
#include <iostream>
#include <INTEGER.h>
#include <fstream>
#include <string>
#include <rapidjson/document.h>
#include <rapidjson/writer.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/istreamwrapper.h>
#include <rapidjson/ostreamwrapper.h>
using namespace rapidjson;
Document doc;
void MqttApplication::mqttReceive()
{
try {
cout << "\subscribing to topics..." << endl;
mqttClient->start_consuming();
mqttClient->subscribe(TOPIC,QOS)->wait();
cout << "...OK" << endl;
}
catch (const mqtt::exception& exc) {
cerr << exc.what() << endl;
return;
}
while (true) {
auto msg = mqttClient->consume_message();
if (!msg) {
if (!mqttClient->is_connected()) {
cout << "lost connection" << endl;
if (mqttTryReconnect(*mqttClient)) {
mqttClient->subscribe(TOPIC,QOS);
cout << "application reconnected" << endl;
continue;
}
else {
cout << "application reconnect failed." << endl;
}
}
else {
cout << "error occurred." << endl;
}
break;
}
try {
send(mqttClient->consume_message());
}
catch (const mqtt::exception& exc) {
cerr << exc.what() << endl;
return;
}
if (msg->get_topic() == "command" && msg->to_string() == "exit") {
cout << "Exit command received" << endl;
break;
}
cout << msg->get_topic() << ": " << msg->to_string() << endl;
}
}
void MqttApplication::send(const mqtt::const_message_ptr& pr)
{
if (pr)
{
cout << typeid(pr).name() << endl;
}
}
hpp
void send(const mqtt::const_message_ptr& pr);
我得到这张照片:
socktap-mqtt: /usr/include/rapidjson/document.h:1154: rapidjson::GenericValue<Encoding,Allocator>::MemberIterator rapidjson::GenericValue<Encoding,Allocator>::FindMember(const rapidjson::GenericValue<Encoding,SourceAllocator>&) [with SourceAllocator = rapidjson::MemoryPoolAllocator<>; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding,Allocator>::MemberIterator = rapidjson::GenericMemberIterator<false,rapidjson::UTF8<>,rapidjson::MemoryPoolAllocator<> >]: Assertion `IsObject()' failed.
Aborted
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。