【问题标题】:boost serialization of pointer to primitive without wrapper在没有包装器的情况下提升指向基元的指针的序列化
【发布时间】:2014-01-08 18:45:36
【问题描述】:

有什么方法可以序列化指向原语的指针而不将其包装在类中?

我注意到对以下问题的评论,它需要在程序中跟踪该类型的所有原语,我猜这可能会减慢序列化速度。但如果我对此没意见怎么办?有没有办法为所有原始类型启用跟踪?

How do I serialize a class containing pointers to primitives?

我发现这个线程(从 2006 年开始)也暗示了这个问题。似乎应该可以序列化指向原语的指针,但是缺乏跟踪使它成为您可能不想要的东西。它似乎暗示了这种可能性,但没有解释它是否曾经实施过。

http://boost.2283326.n4.nabble.com/serialization-serialization-of-pointers-to-primitive-types-td2561086.html

【问题讨论】:

  • 只需将它包装在一个类中......这是明智的做法。有什么反对意见?
  • 这是一个复杂的场景。但它与创建使用 C++ 代码的 sn-ps 的 DSL 有关。我希望 DSL 的用户能够使用他们习惯的 C++ 类型。
  • 我看不出 DSL 是如何相关的(除非我把图片颠倒了,并且你(ab)使用序列化来解析 DSL)。我假设类似基于 Proto 的 eDSL(表达式模板)?在这种情况下,没有什么能阻止你改变 ast。或者,如我所愿,使用 Boost Spirit Karma 编写序列化并绕过整个“问题”
  • 这很好,我可以在生成代码的同时翻译类型。现在,我试图避免对 C++ 代码进行大量解析,并且在大多数情况下只是通过 sn-ps 而不进行修改。

标签: c++ serialization boost


【解决方案1】:

你可以为operator&写一个重载函数,像这样:

template<class Archive>
void operator&(Archive & ar, const char* &p)
{

}

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多