【问题标题】:Where to declare BOOST_CLASS_EXPORT for serialization在哪里声明 BOOST_CLASS_EXPORT 进行序列化
【发布时间】:2020-01-17 22:18:09
【问题描述】:

我想序列化我的数据并且我有多态类。

最初当我学习序列化的过程时,我在他们的头文件中声明了继承类。

  Header file for Sphere which is sub class of geometry
  BOOST_CLASS_EXPORT(Sphere)

但是当我尝试在我的项目中进行操作时,我得到了链接器错误 2005,指出该对象已在对象中定义。

所以我尝试在 cpp 文件中声明 BOOST_CLASS_EXPORT(Sphere),但得到错误消息派生类未注册或导出。

最终我通过在主文件中声明派生类来让它工作。

  BOOST_CLASS_EXPORT_GUID(Sphere, "Sphere"); 

但这里的问题是,如果我有 30 个对象,我需要在主文件中声明它们,如果我添加任何新类,我需要在主文件中声明它们。

我可以在类的头文件或 cpp 文件中定义导出吗?

【问题讨论】:

    标签: c++ c++11 serialization boost


    【解决方案1】:

    您希望将导出 KEY 和 IMPLEMENTATION 分开。

    我有一些非常完整的答案,其中一些还涉及多态性和抽象基础。看到那里有好的建议:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多