我有一个要使用 boost 序列化程序保存和加载的数据类。
该类包括两个成员En *sender
,En *receiver
两个对象已在我的系统中创建。我不需要再次创建它们。我只需要发送(序列化)它们的address
, 以用作另一端的参考。
En *sender
如果我使用像,这样的普通指针 En *receiver
,boost 将序列化整个对象(我不想要)。
所以我想我应该使用En **sender
,En **receiver
这会产生错误。我可以知道我应该如何修改课程以达到我的目的吗?
非常感谢。
class dataMessage
{
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & sender;
ar & receiver;
}
//I figured I should user pointer to pointer coz in case of the normal pointer,
//the serilizer would serializes the object that the pointer is pointing to;
//whereas I just need to save the 'pointer' to object so that we
//can use it as a reference at the other end.
En **sender;
En **receiver;
public:
dataMessage(){
sender = receiver = 0;
}
void setDataClassType();
virtual void registerType(boost::archive::text_oarchive &oa)
{
oa.register_type(static_cast<dataMessage *>(NULL));
}
virtual void registerType(boost::archive::text_iarchive &ia)
{
ia.register_type(static_cast<dataMessage *>(NULL));
}
};
部分错误:
error: request for member ‘serialize’ in ‘t’, which is of pointer type ‘En*’ (maybe you meant to use ‘->’ ?)