【发布时间】:2023-03-30 03:59:01
【问题描述】:
我有一种情况,我想定义一个模板类,它能够获得几种不同的基本类型,如int、char array、data structure 或string。然后我想使用一种方法来序列化和传输数据,该方法接受一个指向字符数组的指针和一个长度参数。
sendData(const void *, size_t);
template <typename T>
T myClass(T data)
{
// cast data to char array; calculate the length if not given
sendData(data, length);
}
投射数据参数和计算大小的最佳方法是什么?模板专业化是处理我们只希望为模板预定义数据类型列表的情况的最佳选择吗?我正在寻找一种使用本机 C++ 且没有外部序列化库的解决方案,并且还避免使用 reinterpret_cast。谁能提供我基本的实现示例?
在接收端,有没有办法让接收端在反序列化之前确定并验证接收到的数据是否具有预期的类型?
【问题讨论】:
-
您不能使用
std::string或任何其他具有内部内存分配的数据来执行此操作。您也不能依赖在不同机器/系统/编译器上具有相同内存布局的数据。
标签: c++ c++11 serialization deserialization