我正在学习使用 boost 在 C++ 中对我的一些类进行序列化。
我在接口中有一个结构。我使用 boost serilaize 函数来像这样序列化这个结构。
接口.h
struct X {
  const Long rate;
}
template <class Archive>     
  void serialize(Archive& ar, uint32 version)
  {
     ar & this->rate;
  }
BOOST_CLASS_EXPORT(X);   
现在这个标题将被我的主类使用。假设 main.cpp,这个主类的标题有
主文件
#include "Interface.h"
class Main {
 // some stuff
template <class Archive>
   void serialize(Archive& ar, uint32 version);
  X x;
  friend class boost::serialization::access;
};
template <class Archive>
void
Main::serialize(Archive& ar, uint32 version)
{
  ar & x;
}
BOOST_CLASS_EXPORT_KEY(Main);   
主文件
BOOST_CLASS_EXPORT_IMPLEMENT(Main);
当我尝试编译此代码时,出现以下错误:
C:\Users\boost1470_win64_vc90sp1\include\boost/archive/detail/check.hpp(162):错误 C2027:使用未定义类型 'boost::STATIC_ASSERTION_FAILURE' 与 [ x=false ]
C:\Users\boost1470_win64_vc90sp1\include\boost/archive/detail/iserializer.hpp(577) :请参阅使用 [ T= 编译的函数模板实例化 'void boost::archive::detail::check_const_loading(void)' 的引用常量长
C:\Users\interfaces/Interface.h(12) : 请参见使用 [ Archive=boost:: 编译的函数模板实例化 'Archive &boost::archive::detail::interface_iarchive::operator &(T &)' 的引用archive::text_iarchive, T=const Long ]
C:\Users\interfaces/Interface.h(17) : 请参阅使用 [ T=X ] 编译的类模板实例化 'boost::archive::detail::extra_detail::guid_initializer' 的参考
知道出了什么问题。我是新手,想了解它是如何工作的。
注意:如果我在结构中使用 int 而不是 long,我看不到 boost::STATIC_ASSERTION_FAILURE 错误。