我想通过msgpack发送以下结构。
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 );
};
需要注意的是,另一端的接收器需要val作为原始指针。我想这样做而不在接收方转换。有什么想法吗?
答案 0 :(得分:0)
您未能解释为什么要这样做。序列化时指针永远不会有意义(否则它是进程内数据,不需要序列化)。
只需传递指针指向的值即可。如果需要表示“数字或NULL”,则传递包含整数和布尔值的结构。
struct NullableInt {
int value{0};
bool null{true};
};