gpt4 book ai didi

c++ - 在没有公共(public)基类的情况下进行序列化

转载 作者:行者123 更新时间:2023-11-28 03:46:51 26 4
gpt4 key购买 nike

我正在为以下问题寻找一些设计建议:

我正在使用 boost geometry,我有几个与 boost geometry 兼容的自定义几何类型(通过特征),但我使用的大多数类型都是 typedef。

class MyPoint
{
// custom stuff
};
// declare traits for MyPoint for use wih boost geometry here

class MyTaggedPoint : public MyPoint
{
// more custom stuff
};
// declare traits for MyTaggedPoint for use wih boost geometry here

// example typedefs
typedef boost::geometry::model::polygon<MyPoint> Polygon;
typedef boost::geometry::model::polygon<MyTaggedPoint> TaggedPolygon;

我的问题是当我想序列化/反序列化我的几何图形时。

假设所有几何图形都存储在数据库的二进制字段中。如果我有一个基本几何类,我可能只写 g->type() (4 个字节)并调用 g->save(some_outputstream) 并将所有这些写入二进制字段。然后在读取二进制字段时,我会简单地读取字节并转换为适当的几何类型。

但是 Boost 几何体没有有一个共同的基类。

当有多种类型可以存储为二进制并且你们没有共享基类时,你们通常如何处理序列化?

我在想也许有一个 Serializer 类,它返回一个 boost.Any,然后可以使用将存储在(反)序列化器中的类型转换几何图形?但是序列化程序需要为每个几何类型保存方法吗?例如:保存(我的多边形)、保存(我的点)

有什么想法/经验吗?

最佳答案

Boost's serialization如果您不想重新实现轮子,则支持非侵入式序列化。您甚至可以在某处找到对其几何类型的库支持。不幸的是,由于 XML 问题,接口(interface)有些复杂。

关于c++ - 在没有公共(public)基类的情况下进行序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com