0

所以我不得不重写 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”未命名类型

...命名空间“boost::archive”中的错误“mongo_iarchive”未命名类型

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

4

1 回答 1

0

您是否尝试过前向声明?

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;
      ...
};
于 2013-05-03T21:07:59.737 回答