Giriş
Kalıtım varsa kullanılır. Şu satırı dahil ederiz.
Burada dikkat edilmesi gereken nokta kalıtan sınıfı serialize etmek. İstersek şu satırı dahil ederiz.
Şöyle yaparız. Burada archive nesnesine yapılan register_type çağrısından emin değilim.
Kalıtım varsa kullanılır. Şu satırı dahil ederiz.
#include <boost/serialization/export.h>
BOOST_SERIALIZATION_ASSUME_ABSTRACT yazısına da göz atabilirsiniz.
Sınıfları tanımlamak için şöyle yaparız.
class Father {
public:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned version)
{
...
}
};
class Daughter : public Father {
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned version)
{
ar & boost::serialization::base_object<Father>(*this);
...
}
};
BOOST_CLASS_EXPORT(Daughter
);
boost::serialization::base_object metoduBurada dikkat edilmesi gereken nokta kalıtan sınıfı serialize etmek. İstersek şu satırı dahil ederiz.
#include <boost/serialization/base_object.hpp>
Şöyle yaparız.ar & boost::serialization::base_object<B>(*this);
KullanımŞöyle yaparız. Burada archive nesnesine yapılan register_type çağrısından emin değilim.
Daughter girl;
Daughter *d = &girl;
Father *papa = d; // My father object contains daughter object
//SEND
{
boost::archive::text_oarchive oa = ...;
oa.register_type<Daughter>();
oa << *papa;
}
Hiç yorum yok:
Yorum Gönder