13 Eylül 2017 Çarşamba

serialization BOOST_SERIALIZATION_BASE_OBJECT_NVP

Giriş
Kalıtım kullanan sınıfların XML olarak yazılıp okunmasını sağlar.

BOOST_SERIALIZATION_ASSUME_ABSTRACT ile benzeşir.

Örnek
Elimizde şu sınıf hiyerarşisi olsun.
class Base
{
public:
  std::string m_VarA;
  std::string m_VarB

  template<class Archive>
  void serialize(Archive & rArchive, const unsigned int nVersion)
  {
    rArchive & BOOST_SERIALIZATION_NVP(m_VarA);
    rArchive & BOOST_SERIALIZATION_NVP(m_VarB);
  }
};

class Derived : public Base
{
friend class boost::serialization::access;
public:
  std::bitset<32> m_Flags;
  template<class Archive>
  void serialize(Archive & rArchive, const unsigned int nVersion)
  {
    rArchive & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); 
    rArchive & BOOST_SERIALIZATION_NVP(m_Flags);        
  }    
};
Şöyle yaparız.
std::ostringstream stream;
Derived var;
{
  boost::archive::xml_oarchive rArchive(stream);
  rArchive & boost::serialization::make_nvp("Configuration", var);
}

Hiç yorum yok:

Yorum Gönder