msgpage C ++:使用MSGPACK_DEFINE发送原始指针

时间:2016-07-14 15:31:25

标签: c++ pointers serialization stream msgpack

我想通过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作为原始指针。我想这样做而不在接收方转换。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您未能解释为什么要这样做。序列化时指针永远不会有意义(否则它是进程内数据,不需要序列化)。

只需传递指针指向的值即可。如果需要表示“数字或NULL”,则传递包含整数和布尔值的结构。

struct NullableInt {
    int value{0};
    bool null{true};
};