20 Kasım 2016 Pazar

serialization BOOST_CLASS_EXPORT

Giriş
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 metodu
Burada 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