朋友类提升mongo_iarchive不是一个名字

时间:2013-05-03 21:03:12

标签: c++ mongodb serialization boost archive

所以我必须覆盖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存档/序列化库的一部分,它是一个自定义库(虽然我不认为这应该重要)

1 个答案:

答案 0 :(得分: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;
      ...
};