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