codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> #include <fstream> #include <boost/archive/binary_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> #include <boost/serialization/base_object.hpp> #include <boost/serialization/string.hpp> #include <boost/serialization/export.hpp> #include <boost/noncopyable.hpp> using namespace std; //////////////////////////////////////////////////// B.hpp class B : private boost::noncopyable { public: virtual void print(); void set( string str ); virtual string name(); virtual void archv(); protected: string s; private: friend class boost::serialization::access; template<typename Archive> void serialize( Archive &ar, const unsigned int /* version */ ) { ar & s; } }; BOOST_SERIALIZATION_ASSUME_ABSTRACT( B ) ///////////////////////////////////////////////////// B.cpp void B::print() { cout << s << endl; } void B::set( string str ) { s = str; } string B::name() { return string("B"); } void B::archv() { ofstream file((string("test")+name()+".db").c_str(), ios::binary); boost::archive::binary_oarchive oa(file); oa << (*this); } ////////////////////////////////////////////////////// D.hpp class D : public B { public: void print(); void set( string str1, string str2 ); string name(); protected: string t; private: friend class boost::serialization::access; template<typename Archive> void serialize( Archive &ar, const unsigned int /* version */ ) { ar & boost::serialization::base_object<B>(*this); ar & t; } }; BOOST_CLASS_EXPORT( D ) ///////////////////////////////////////////////////// D.cpp void D::print() { B::print(); cout << t << endl; } void D::set( string str1, string str2 ) { s = str1; t = str2; } string D::name() { return string("D"); } /////////////////////////////////////////////////// int main ( int argc, char *argv[] ) { B b; D d; b.set(string("HEY")); d.set(string("HO"), string("Let's Go!")); b.archv(); d.archv(); B b_; D d_; ifstream file1( "testB.db", ios::binary ); boost::archive::binary_iarchive ia1( file1 ); ia1 >> b_; ifstream file2( "testD.db", ios::binary ); boost::archive::binary_iarchive ia2( file2 ); ia2 >> d_; b_.print(); d_.print(); return 0; } // ---------- end of function main ----------
Private
[
?
]
Run code
Submit