好友类boost mongo_iarchive没有名称类型

friend class boost mongo_iarchive does not a name a type

本文关键字:有名称 类型 iarchive boost mongo 好友      更新时间:2023-10-16

所以我必须重写boost mongo归档类型的一些功能,因此我需要这些归档类型成为我正在序列化的类的友类。但是,我遇到了编译器查找存档类的问题。

//#include <boost/archive/mongo_iarchive.hpp>  I dont want these here!
//#include <boost/archive/mongo_oarchive.hpp>
class MyClass
{
  ... //declarations
  friend class boost::archive::mongo_oarchive;
  friend class boost::archive::mongo_iarchive;
  friend class boost::serialization::access;
  ...
};
我得到的错误是

…命名空间'boost::archive'中的'mongo_oarchive'没有命名a类型

…错误'mongo_iarchive'在命名空间'boost::archive'中没有命名一个类型

但是对于serialization::access类没有问题。我不想在这个级别包含mongo存档,因为我不希望客户端代码依赖于mongo序列化和mongo c++驱动程序库。注意mongo序列化库不是boost存档/序列化库的一部分,它是一个自定义库(尽管我认为这应该无关紧要)

您是否尝试了前向声明?

namespace boost
{
namespace archive
{
class mongo_oarchive;
class mongo_iarchive;
}
}
class MyClass
{
      ... //declarations
friend class boost::archive::mongo_oarchive;
friend class boost::archive::mongo_iarchive;
friend class boost::serialization::access;
      ...
};