我有一个名为 A 的类,我想在另一个名为 B 的类中序列化它的对象。但我一直收到这个错误:
error: ‘class std::shared_ptr<A>’ has no member named ‘serialize’
类 A 是:
class A
{
public:
typedef shared_ptr<A> Ptr;
string name;
Predicate(const string &name = ""):name(name)
{}
private:
template<typename Archive>
void serialize(Archive& archive, const unsigned int v)
{
archive & name;
}
friend class B;
friend class boost::serialization::access;
}
上课 B :
class B
{
public:
typedef unordered_set<A::Ptr,
APtrKeyHash,
APtrKeyEq> A_set_t;
A_set_t test;
private:
template<typename Archive>
void serialize(Archive& archive, const unsigned int v)
{
archive & test;
}
friend class boost::serialization::access;
}
请注意,通过shared_ptr这里我指的是std :: shared_ptr,而不是boost :: shared_ptr。实际上我在我的A类之前使用了这一行: 使用命名空间std;
答案 0 :(得分:4)
你可能忘了包含
#include <boost/serialization/shared_ptr.hpp>
答案 1 :(得分:0)
您需要shared_ptr.hpp和boost版本1.56
的组合