4

我有一种情况,我在 C++ 中有一个类的对象,它需要使用 Linux 管道跨进程边界(进程 1 到进程 2)发送。我在网上搜索了如何在 C++ 中进行序列化。我找到了boost,但它需要在课堂上进行一些更改。在我的情况下,我无法更改课程。

这个类有很多指针,嵌套持续到3层(类1有类2类型的指针1->类2有类3类型的指针2->类3有类4类型的指针3->类4)。有什么方法可以使用管道发送这个对象,以便可以在第二个进程中重新创建它?

谢谢。

4

3 回答 3

2

您需要以某种方式序列化该类。您的选择究竟如何,但您可以使用JSONXML或 之类的格式或您决定的某种二进制格式。没有看到任何关于你的课程的更多细节,没有什么要补充的。

另一种选择可能是使用共享内存段来存储类,但这会带来指针数学、并发性和其他复杂性的问题。

于 2012-10-24T02:10:12.537 回答
1

您是否考虑过Memento 模式的应用?您可以创建一个或多个类来处理如何序列化对象(文本或二进制)的细节。

您为保存对象而创建的类也将知道如何从您在下一个过程中选择的序列化格式中实例化新对象。

于 2012-10-24T02:09:06.237 回答
1

您将不得不进行某种序列化,因为您不能跨管道或类似的东西复制构造。如果您无法更改类,那么您唯一的选择是编写一个使用顶级类的公共 API 的外部函数或类来获取所有部分并序列化该数据。然后在另一端,您必须从流中重建它。

于 2012-10-24T02:09:57.803 回答