boost serialization
От: Аноним  
Дата: 05.08.11 05:06
Оценка:
Здравствуйте.


........................
#include <fstream>

#include <boost/serialization/string.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/serialization/nvp.hpp>

class trn
{
private:
    friend class boost::serialization::access;

    int    id;
    std::string    name;

    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & BOOST_SERIALIZATION_NVP(id);
        ar & BOOST_SERIALIZATION_NVP(name);
    }

public:
    trn(){};
    trn(int id_, std::string name_) : id(id_), name(name_) {};
};

int _tmain(int argc, _TCHAR* argv[])
{
    trn a1(1, "test");

    std::ofstream ofs("1.xml");

    {
        boost::archive::xml_oarchive oa(ofs);
        oa << a1;
    }
    return 0;
}


Вот такая вот бяка...хотя с тестовой и бинарной сериализацией — все на ура проходит. Это читал и не понял....с серализацией в бусте не очень — так что если не трудно — поможите

d:\lib\boost_1_46_1\boost\archive\basic_xml_oarchive.hpp(92) : error C2664: 'boost::mpl::assertion_failed' : cannot convert parameter 1 from 'boost::mpl::failed ************boost::serialization::is_wrapper<T>::* ***********' to 'boost::mpl::assert<false>::type'
1> with
1> [
1> T=trn
1> ]
1> No constructor could take the source type, or constructor overload resolution was ambiguous
1> d:\lib\boost_1_46_1\boost\archive\detail\interface_oarchive.hpp(63) : see reference to function template instantiation 'void boost::archive::basic_xml_oarchive<Archive>::save_override<T>(T &,int)' being compiled
1> with
1> [
1> Archive=boost::archive::xml_oarchive,
1> T=trn
1> ]
1> d:\projects\c++\ruscom\test\serialization\ser2\ser2\ser2.cpp(50) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<trn>(T &)' being compiled
1> with
1> [
1> Archive=boost::archive::xml_oarchive,
1> T=trn
1> ]
1>Build log was saved at "file://d:\Projects\C++\test\serialization\ser2\ser2\Debug\BuildLog.htm"
1>ser2 — 1 error(s), 0 warning(s)

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.