Я бы хотел отправить следующую структуру через msgpack.msgpage C++: отправить raw указатель с MSGPACK_DEFINE
struct MyStruct {
std::string name{""};
int* val{nullptr};
MSGPACK_DEFINE(name, val);
};
До сих пор во всех моих проектах, единственным способом я потоковом с msgpack использует MSGPACK_DEFINE, то писать на msgpack-структуру :: sbuffer (и отправить его). макрос MSGPACK_DEFINE жалуется, что, возможно, я пропустил «->», поэтому я предполагаю, что он не обнаруживает, что это указатель.
Умные указатели, кажется, работает, хотя:
struct MyStruct {
std::string name{""};
std::shared_ptr<int> val{nullptr};
MSGPACK_DEFINE(name, val);
};
Проблема заключается в том, что приемник на другом конце необходимо Вэл быть сырым указателем. Я хотел бы сделать это без преобразования на принимающей стороне. Есть идеи?
Это был простой пример. На практике это на самом деле указатель на другие структуры. Я посылаю древовидную структуру. Я в порядке с его сериализацией (каким-то образом), но не знаю о каком-либо макросы msgpack, который может работать, или об этом. Я думаю, что ответ представляет собой более простую структуру на заднем конце, а затем выполняет все магические действия с исходными указателями на принимающей стороне. –
Повторю: указатели никогда не имеют смысла при сериализации. –
Позвольте мне прояснить это: мне интересно, может ли макрос разыменовать указатель и сериализовать его для меня каким-то значимым образом. Если он обернут в shared_ptr, он отлично работает. –