【发布时间】:2018-08-28 23:32:02
【问题描述】:
我正在尝试序列化一个结构以作为 UDP 消息发送。我遇到的问题是该结构包含一个可变长度的子结构数组,如下所示:
struct SubStruct
{
short val1;
short val2;
};
struct Message
{
short numSubStructs;
SubStruct* structs;
};
我用于发送固定长度消息的方法是将结构转换为unsigned char*。下面MSG_LENGTH等于sizeof(short) + numSubStructs * sizeof(SubStruct)
send(socket, reinterpret_cast<unsigned char*>(&someMessage), MSG_LENGTH);
这适用于我所有的固定长度消息,但不适用于可变长度消息。查看通过套接字发送的数据,我很确定它发送的是结构指针的实际地址。
我的问题是,除了遍历指针(数组)并附加到某个缓冲区之外,还有其他方法可以序列化这种结构吗?
谢谢
【问题讨论】:
-
C++ 中不能有可变大小的类型。
-
@NeilButterworth 是的,我明白这一点。我想我应该澄清一下,当我说可变大小时,我的意思是指针指向某个运行时分配的数组。
标签: c++ serialization